/usr/share/pyshared/gevent/http.py is in python-gevent 0.13.6-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # Copyright (c) 2009-2010 Denis Bilenko. See LICENSE for details.
from gevent import core
from gevent.baseserver import BaseServer
__all__ = ['HTTPServer']
class HTTPServer(BaseServer):
"""An HTTP server based on libevent-http.
*handle* is called with one argument: an :class:`gevent.core.http_request` instance.
"""
default_response_headers = [('Connection', 'close')]
def __init__(self, listener, handle=None, backlog=None, spawn='default', default_response_headers='default'):
BaseServer.__init__(self, listener, handle=handle, backlog=backlog, spawn=spawn)
self.http = None
if default_response_headers != 'default':
self.default_response_headers = default_response_headers
def _on_request(self, request):
spawn = self._spawn
if spawn is None:
self.handle(request)
else:
if self.full():
self._on_full(request)
else:
spawn(self.handle, request)
def _on_full(self, request):
msg = 'Service Temporarily Unavailable'
request.add_output_header('Connection', 'close')
request.add_output_header('Content-type', 'text/plain')
request.add_output_header('Content-length', str(len(msg)))
request.send_reply(503, 'Service Unavailable', msg)
def start_accepting(self):
self.http = core.http(self._on_request, self.default_response_headers)
self.http.accept(self.socket.fileno())
def stop_accepting(self):
self.http = None
|