gpt4 book ai didi

python - Twisted:创建线程池然后守护进程导致无信息挂起

转载 作者:太空狗 更新时间:2023-10-30 00:57:46 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com