Как написать HTTP-сервер Python для прослушивания нескольких портов?

Не легко. У вас может быть python-interpreter два экземпляра ThreadingHTTPServer, напишите py свою собственную функцию pythonista serve_forever() (не волнуйтесь, это webserver не сложная функция).

Существующая python функция:

def serve_forever(self, poll_interval=0.5):
    """Handle one request at a time until shutdown.

    Polls for shutdown every poll_interval seconds. Ignores
    self.timeout. If you need to do periodic tasks, do them in
    another thread.
    """
    self.__serving = True
    self.__is_shut_down.clear()
    while self.__serving:
        # XXX: Consider using another file descriptor or
        # connecting to the socket to wake this up instead of
        # polling. Polling reduces our responsiveness to a
        # shutdown request and wastes cpu at all other times.
        r, w, e = select.select([self], [], [], poll_interval)
        if r:
            self._handle_request_noblock()
    self.__is_shut_down.set()

Таким образом, наша python замена будет выглядеть примерно pythonic так:

def serve_forever(server1,server2):
    while True:
        r,w,e = select.select([server1,server2],[],[],0)
        if server1 in r:
            server1.handle_request()
        if server2 in r:
            server2.handle_request()

python

webserver

2022-10-19T07:14:33+00:00
Вопросы с похожей тематикой, как у вопроса:

Как написать HTTP-сервер Python для прослушивания нескольких портов?