值错误:信号仅在主线程Django mod_wsgi中工作

2024-10-02 00:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图执行一个shell命令,并使用pythonsignal模块杀死它。在

我知道信号只适用于主线程,所以我运行Django开发服务器

python manage.py runserver --nothreading --noreload

而且效果很好。在

但是,当我使用Apache/mod_wsgi部署django应用程序时,它显示以下错误:

^{pr2}$

以下是我的apache virtualhost设置:

WSGIDaemonProcess testcloud display-name=scilab_cloud  user=apache group=apache threads=1
WSGIProcessGroup testcloud
WSGIScriptAlias / /Site/cloud/soc/soc/wsgi.py
WSGIImportScript /Site/cloud/soc/soc/wsgi.py process-group=testcloud application-group=%{GLOBAL}

我也有以下设置以外的虚拟主机在httpd.conf公司名称:

WSGIRestrictSignal Off
WSGISocketPrefix /var/run/wsgi

Here is the link到使用信号的程序,以及我在django应用程序中使用的那个。在

任何帮助都将不胜感激。在


Tags: 模块djangopy命令应用程序cloudwsgi信号
1条回答
网友
1楼 · 发布于 2024-10-02 00:39:03

我不确定能不能那么容易地做到,至少用mod\wsgi不行。是否线程化的决定是apache和mod_wsgi中的构建和运行时选项的总和,这两个选项在默认情况下都设置为threading。在

我会给你指出关于这一点的文档,但我只能发布两个链接,因此我认为最好用它们来提出解决方案:

我有从python使用sh运行shell命令的非常好的经验,它甚至有一个异步执行模块。也许您可以启动运行shell命令的python代码,并在需要时处理回调对象。在

或者,更好的是,当sh要求您在处理信号时有一些顾虑,您可以在不使用异步执行模块的情况下运行它,但是在另一个带有multiprocessing.Proces的进程中,您可以使用object.terminate()杀死一个Process对象

相关问题 更多 >

    热门问题