Я разрабатываю сетевое приложение на Twisted, часть которого состоит из веб-интерфейса, написанного на Django.
I желаю использовать WSGI-сервер Twisted для размещения веб-интерфейса, и я написал рабочий плагин "tap", который позволяет мне использовать twistd
.
При запуске сервера с -n
флаг (не демонизировать) все работает нормально, но когда этот флаг снят, сервер вообще не отвечает на запросы, и сообщения не регистрируются (хотя сервер все еще работает).
В Twisted Trac есть ошибка , которая, кажется, точно описывает проблему, а мой плагин основан на коде , упомянутом в билете .
К сожалению, проблема не была устранена - и она была поднята почти год назад.
Я попытался создать класс ThreadPoolService
, который расширяет Service
и запускает заданный ] ThreadPool
при вызове startService
:
class ThreadPoolService(service.Service):
def __init__(self, pool):
self.pool = pool
def startService(self):
super(ThreadPoolService, self).startService()
self.pool.start()
def stopService(self):
super(ThreadPoolService, self).stopService()
self.pool.stop()
Однако Twisted, похоже, вообще не вызывает метод startService
. Я думаю, что проблема в том, что с подключаемым модулем ServiceMaker
может возвращать только одну службу, которая должна быть запущена, а все остальные, принадлежащие тому же приложению, не запускаются. Очевидно, Я возвращаю службу TCPServer
, которая содержит корень WSGI.
На этом этапе я наткнулся на кирпичную стену. Есть ли у кого-нибудь идеи, как я могу обойти эту проблему?