- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Twisted 开发一个网络应用程序,其中一部分包含一个用 Django 编写的 Web 界面。
我希望使用 Twisted 的 WSGI 服务器来托管 Web 界面,并且我编写了一个有效的“tap”插件以允许我使用 twistd
。
当使用 -n
标志运行服务器时(不要守护进程)一切正常,但是当这个标志被移除时服务器根本不响应请求,并且没有记录消息(尽管服务器仍在运行)。
有一个bug on Twisted's Trac这似乎准确地描述了问题,我的插件恰好基于 code referenced in the ticket .
不幸的是,这个问题还没有得到解决 - 它是在将近一年前提出的。
我试图创建一个 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
只能返回要启动的一个 服务 - 而属于同一应用程序的任何其他服务都不会启动.显然,我正在返回一个包含 WSGI 根的 TCPServer
服务。
此时,我有点碰壁了。有没有人对我如何解决这个问题有任何想法?
最佳答案
返回 MultiService
来自您的 ServiceMaker
;一个包括您的 ThreadPoolService
以及您的主要应用程序服务。组装这种东西的 API 非常简单:
multi = MultiService()
mine = TCPServer(...) # your existing application service
threads = ThreadPoolService()
mine.setServiceParent(multi)
threads.setServiceParent(multi)
return multi
鉴于您已经在 Twisted 中找到了处理这个令人困惑的问题的门票,我期待看到您的补丁 :)。
关于python - Twisted:创建线程池然后守护进程导致无信息挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4875326/
我是一名优秀的程序员,十分优秀!