Я разрабатываю сетевое приложение в Twisted, часть которого состоит из веб-интерфейса, написанного на Django.
Я хочу использовать WSGI-сервер Twisted для размещения веб-интерфейса, и я написал работающий плагин «tap», позволяющий мне использовать twistd
.
При запуске сервера с флагом -n
(не демонизировать) все работает нормально, но когда этот флаг снят, сервер вообще не отвечает на запросы, и сообщения не регистрируются (хотя сервер все еще работает).
В Twisted's 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
. Я думаю, проблема в том, что с подключаемым модулем "tap" ServiceMaker
может вернуть только одну службу для запуска, а любые другие, принадлежащие тому же приложению, не запускаются. Очевидно, я возвращаю сервис TCPServer
, который содержит корень WSGI.
На данный момент, я ударил что-то вроде кирпичной стены. У кого-нибудь есть идеи относительно того, как я могу обойти эту проблему?