我正在构建一个Django应用程序,该应用程序依赖于已实现SIGINT信号处理程序的python模块。

假设我无法更改我所依赖的模块,如何解决将其集成到Django中的“信号仅在主线程中起作用”的错误?

我可以在Django主线程上运行它吗?
有没有一种方法可以禁止处理程序允许模块在非主线程上运行?

谢谢!

最佳答案

Django的内置开发服务器默认情况下启用了自动重新加载功能,该功能会生成一个新线程作为重新加载代码的方式。要解决此问题,您可以简单地执行以下操作,尽管您显然会失去自动重新加载的便利性:

python manage.py runserver --noreload

选择生产设置时,您还需要注意这一点。至少某些部署选项(例如线程化fastcgi)确定可以在主线程之外执行代码。

关于python - Python:Django:信号处理程序和主线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8572830/

10-11 07:39
查看更多