Added fast lookup dict for common response codes

This commit is contained in:
Ubuntu 2016-10-19 08:37:35 +00:00
parent 69345272cd
commit 3d00ca09b9

View File

@ -1,6 +1,12 @@
import ujson import ujson
STATUS_CODES = { COMMON_STATUS_CODES = {
200: b'OK',
400: b'Bad Request',
404: b'Not Found',
500: b'Internal Server Error',
}
ALL_STATUS_CODES = {
100: b'Continue', 100: b'Continue',
101: b'Switching Protocols', 101: b'Switching Protocols',
102: b'Processing', 102: b'Processing',
@ -89,6 +95,13 @@ class HTTPResponse:
b'%b: %b\r\n' % (name.encode(), value.encode('utf-8')) b'%b: %b\r\n' % (name.encode(), value.encode('utf-8'))
for name, value in self.headers.items() for name, value in self.headers.items()
) )
# Try to pull from the common codes first
# Speeds up response rate 6% over pulling from all
status = COMMON_STATUS_CODES.get(self.status)
if not status:
status = ALL_STATUS_CODES.get(self.status)
return (b'HTTP/%b %d %b\r\n' return (b'HTTP/%b %d %b\r\n'
b'Content-Type: %b\r\n' b'Content-Type: %b\r\n'
b'Content-Length: %d\r\n' b'Content-Length: %d\r\n'
@ -97,7 +110,7 @@ class HTTPResponse:
b'%b') % ( b'%b') % (
version.encode(), version.encode(),
self.status, self.status,
STATUS_CODES.get(self.status, b'FAIL'), status,
self.content_type.encode(), self.content_type.encode(),
len(self.body), len(self.body),
b'keep-alive' if keep_alive else b'close', b'keep-alive' if keep_alive else b'close',