【发布时间】:2014-11-06 19:18:58
【问题描述】:
我正在尝试执行一个 shell 命令并使用 python signal 模块杀死它。
我知道信号只适用于主线程,所以我运行 Django 开发服务器,
python manage.py runserver --nothreading --noreload
而且效果很好。
但是当我使用 Apache/mod_wsgi 部署 django 应用程序时,它显示以下错误:
[Fri Sep 12 20:07:00 2014] [error] response = function.call(request, **data)
[Fri Sep 12 20:07:00 2014] [error] File "/Site/cloud/lib/python2.6/site-packages/dajaxice/core/Dajaxice.py", line 18, in call
[Fri Sep 12 20:07:00 2014] [error] return self.function(*args, **kwargs)
[Fri Sep 12 20:07:00 2014] [error] File "/Site/cloud/soc/website/ajax.py", line 83, in execute
[Fri Sep 12 20:07:00 2014] [error] data = scilab_run(code, token, book_id, dependency_exists)
[Fri Sep 12 20:07:00 2014] [error] File "/Site/cloud/soc/website/helpers.py", line 58, in scilab_run
[Fri Sep 12 20:07:00 2014] [error] output = task.run().communicate()[0]
[Fri Sep 12 20:07:00 2014] [error] File "/Site/cloud/soc/website/timeout.py", line 121, in run
[Fri Sep 12 20:07:00 2014] [error] lambda sig,frame : os.killpg(self.pgid,self.timeoutSignal) )
[Fri Sep 12 20:07:00 2014] [error] ValueError: signal only works in main thread
这是我的 apache 虚拟主机设置:
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 到使用 signal 的程序和我在 django 应用程序中使用的程序。
任何帮助将不胜感激。
【问题讨论】:
标签: python django apache signals mod-wsgi