Питона включает an example of creating an HTTP server:Как передать параметры RequestHandler?
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
RequestHandler
класса предоставляется Server
, который затем ухаживает автоматически инстанцирование обработчика.
Предположим, я хочу передать пользовательские параметры обработчику запроса при его создании. Как я могу это сделать?
В частности, я хочу передать параметры из командной строки, и доступ к sys.argv
внутри класса обработчика запроса кажется излишне неуклюжим.
Похоже, что это должно быть возможно за счет переопределения частей класса Server
, но я чувствую, что упускаю из виду более простое и лучшее решение.
Почему не подкласс класса обработчика? – XORcist
Это похоже на главный недостаток дизайна библиотеки socketserver –