lighttpd、Django、FastCGI 和自动重载?

0 投票
1 回答
1241 浏览
提问于 2025-04-16 08:33

我在想,有没有人用这种设置让fcgi自动重载过?我尝试过用django的autoreload.py来实现重载机制(把它复制到我自己的位置,然后调用autoreload.main(start)),但在进程分叉时遇到了错误,像这样:

django/core/servers/fastcgi.py", line 180, 
  in runfastcgi WSGIServer(WSGIHandler(), **wsgi_opts).run() 
     File "build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/fcgi_fork.py", line 140, 
  in run 
     File "build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/preforkserver.py", line 119, 
  in run 
     File "build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/preforkserver.py", line 450, 
  in _installSignalHandlers ValueError: signal only works in main thread

我理想的设置是能够在每次检测到代码变化后,重载或杀掉我的fcgi进程,然后启动一个新的进程,类似于django在它的内部服务器中做的那样。我还尝试过去掉autoreload.py中的线程部分,这样可以避免这个错误,但似乎服务器还是不能正常运行(我还在调查这个问题)。

也许有人在django的settings.py文件中尝试过CherryPies的autoreload.py?

1 个回答

0

我用这个方法让它正常工作了:http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode。我使用了一个监控脚本,在加载我的fastcgi进程之前运行它,再加上supervisord的帮助,这样就能顺利运行了。

撰写回答