Python Twisted:创建一个线程池,然后对其进行后台监控会导致无信息的挂起
我正在用Twisted开发一个网络应用程序,其中一部分由Django编写的web界面组成 我希望使用Twisted的WSGI服务器来托管web界面,并且我已经编写了一个“tap”插件,允许我使用Python Twisted:创建一个线程池,然后对其进行后台监控会导致无信息的挂起,python,django,twisted,threadpool,wsgi,Python,Django,Twisted,Threadpool,Wsgi,我正在用Twisted开发一个网络应用程序,其中一部分由Django编写的web界面组成 我希望使用Twisted的WSGI服务器来托管web界面,并且我已经编写了一个“tap”插件,允许我使用twistd 当使用-n标志运行服务器时(不要后台监控),一切正常,但当删除此标志时,服务器根本不响应请求,并且没有记录任何消息(尽管服务器仍在运行) 有一个插件似乎准确地描述了这个问题,而我的插件恰好基于 不幸的是,这个问题还没有得到解决,而且它几乎是在一年前提出的 我试图创建一个ThreadPoolS
twistd
当使用-n
标志运行服务器时(不要后台监控),一切正常,但当删除此标志时,服务器根本不响应请求,并且没有记录任何消息(尽管服务器仍在运行)
有一个插件似乎准确地描述了这个问题,而我的插件恰好基于
不幸的是,这个问题还没有得到解决,而且它几乎是在一年前提出的
我试图创建一个ThreadPoolService
类,该类扩展Service
并在调用startService
时启动给定的ThreadPool
:
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根目录
在这一点上,我碰到了一些砖墙。有人对我如何解决这个问题有什么想法吗?请从您的服务制造商那里返回一个;一个包括ThreadPoolService
以及主应用程序服务的应用程序。组装这种东西的API非常简单:
multi = MultiService()
mine = TCPServer(...) # your existing application service
threads = ThreadPoolService()
mine.setServiceParent(multi)
threads.setServiceParent(multi)
return multi
鉴于您已经在Twisted中找到了解决这一令人困惑的问题的方法,我期待着看到您的补丁:)。这太完美了。我不知道为什么我没有在文档中看到这一点,但它很有魅力。非常感谢。