Как передать параметры в RequestHandler?

Документация Python включает пример создания HTTP-сервера :

def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler): server_address = ('', 8000) httpd = server_class(server_address, handler_class) httpd.serve_forever() 

Класс RequestHandler предоставляется Server , который затем автоматически RequestHandler обработчик.

Предположим, я хочу передать пользовательские параметры обработчику запроса при его создании. Как я могу это сделать?

В частности, я хочу передать параметры из командной строки, а доступ к sys.argv внутри класса обработчика запроса кажется излишне неуклюжим.

Похоже, что это должно быть возможно за счет переопределения частей класса Server , но я чувствую, что упускаю из виду более простое и лучшее решение.

One Solution collect form web for “Как передать параметры в RequestHandler?”

Используйте фабрику классов:

 def MakeHandlerClassFromArgv(init_args): class CustomHandler(BaseHTTPRequestHandler): def __init__(self, *args, **kwargs): super(CustomHandler, self).__init__(*args, **kwargs) do_stuff_with(self, init_args) return CustomHandler if __name__ == "__main__": server_address = ('', 8000) HandlerClass = MakeHandlerClassFromArgv(sys.argv) httpd = HTTPServer(server_address, HandlerClass) httpd.serve_forever() 
  • Как сохранить значения определенной строки текстового файла в отдельных переменных в Python
  • pip3 ImportError: невозможно импортировать имя «IncompleteRead»
  • Python: выбор конкретного исключения
  • Что такое «Отображение символов типаError должно возвращать целое число ...» в этом коде python?
  • Разница между классом foo и классом foo (object) в Python
  • Как печатать доску в python?
  • Динамическое добавление @property в python
  • Сравнить строку со всеми значениями в массиве
  • Python - лучший язык программирования в мире.