我正在构建一个Django应用程序,该应用程序依赖于已实现SIGINT信号处理程序的python模块。
假设我无法更改我所依赖的模块,如何解决将其集成到Django中的“信号仅在主线程中起作用”的错误?
我可以在Django主线程上运行它吗?
有没有一种方法可以禁止处理程序允许模块在非主线程上运行?
谢谢!
最佳答案
Django的内置开发服务器默认情况下启用了自动重新加载功能,该功能会生成一个新线程作为重新加载代码的方式。要解决此问题,您可以简单地执行以下操作,尽管您显然会失去自动重新加载的便利性:
python manage.py runserver --noreload
选择生产设置时,您还需要注意这一点。至少某些部署选项(例如线程化fastcgi)确定可以在主线程之外执行代码。
关于python - Python:Django:信号处理程序和主线程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8572830/