回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个django应用程序在apache上运行,带有fastcgi(使用Flup的WSGIServer)。在</p>
<p>这是通过调度.fcgi,连接在下面:</p>
<pre><code>#!/usr/bin/python
import sys, os
sys.path.insert(0, os.path.realpath('/usr/local/django_src/django'))
PROJECT_PATH=os.environ['PROJECT_PATH']
sys.path.insert(0, PROJECT_PATH)
os.chdir(PROJECT_PATH)
os.environ['DJANGO_SETTINGS_MODULE'] = "settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded",daemonize='false',)
</code></pre>
<p>运行在wsgi服务器上的快速处理程序最终完成了这项工作。在</p>
<p>有时会发生异常,导致fastcgi崩溃。在</p>
<p>编辑:我不知道是什么错误导致fastcgi崩溃,也不知道fastcgi是否崩溃。我只知道有时候站点会关闭——一直关闭——直到我重启apache。中出现的唯一错误错误.log是破裂的管道和不完整的集管,如下所列。在</p>
<p>标题不完整:</p>
<p>注意:我已经用“…”替换了敏感信息或混乱</p>
^{pr2}$
<p>断管:</p>
<p>注意:这恰好适用于一个trac站点,而不是django应用程序,但看起来是一样的。在</p>
<pre><code>Unhandled exception in thread started by <bound method Connection.run of <trac.web._fcgi.Connection object at 0xb53d7c0c>>
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 654, in run
self.process_input()
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 690, in process_input
self._do_params(rec)
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 789, in _do_params
self._start_request(req)
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 773, in _start_request
req.run()
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 582, in run
self._flush()
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 589, in _flush
self.stdout.close()
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 348, in close
self._conn.writeRecord(rec)
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 705, in writeRecord
rec.write(self._sock)
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 542, in write
self._sendall(sock, header)
File "/usr/lib/python2.4/site-packages/Trac-0.12dev_r7715-py2.4.egg/trac/web/_fcgi.py", line 520, in _sendall
sent = sock.send(data)
socket.error: (32, 'Broken pipe')
</code></pre>
<p>我浏览了/var/log/apache2/错误.log,但我似乎找不到坠机的原因。我有时会遇到内存交换问题,但我觉得这是不同的。(请原谅我的无知。我愿意学习如何更好地实现和调试服务器管理。)</p>
<p>我想用try/except来包装runfastcgi。处理随机异常的最佳方法是什么(直到我找出真正的原因为止)?在</p>
<p>我相信WSGIServer可以处理许多请求。如果捕捉到异常,是否可以重新调用runfastcgi而不必担心无限循环?我应该为有问题的异常调用请求返回错误HttpRequest吗?我甚至不知道该怎么做。在</p>
<p>我一直在查看django/core/servers/快速CGI.py和django/core/handlers/wsgi.py和django/http/<strong>init</strong>.py</p>
<p>我还没能在理解flup的观点方面取得进展。在</p>
<p>有什么想法或经验可以向我学习?在</p>
<p>谢谢!在</p>