我在开发机器上使用 Lighttpd + FastCGI + Django。我通过 manage.py 的命令行选项启动 FastCGI 服务器。
问题是我确实经常对源进行更改,我需要让 FastCGI 自动获取这些更改,就像“./manage.py runserver”一样。
也许有一个命令行选项,或者任何其他解决方案?
您是否查看过执行监控的 manage.py 的 runserver 部分中的代码?我认为您没有理由不将该代码复制粘贴到自定义的 manage.py 脚本中,并将其设置为在检测到更改时运行轻松重启命令。
或者,您可以运行一个单独的 python 程序,该程序使用 pyinotify 之类的包重新启动:
我想知道是否有人曾经让这个工作?我尝试使用 django 的 autoreload.py 实现重新加载机制,不幸的是,当分叉发生时我得到错误,例如:
django/core/servers/fastcgi.py”,第 180 行,在 runfastcgi WSGIServer(WSGIHandler(), **wsgi_opts).run() 文件“build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/ server/fcgi_fork.py”,第 140 行,运行文件“build/bdist.freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/preforkserver.py”,第 119 行,运行文件“build/bdist. freebsd-6.4-RELEASE-p9-amd64/egg/flup/server/preforkserver.py",第 450 行,在 _installSignalHandlers ValueError 中:信号仅在主线程中有效
我理想的设置是能够在每次检测到代码更改后重新加载/终止我的 fcgi 进程并启动一个新进程,类似于 django 如何使用其内部服务器执行此操作。我还尝试从 autoreload.py 中删除可以解决此错误的线程,但它似乎无法正确运行服务器(仍在调查中)。
也许有人在 django 的 settings.py 文件中尝试过 CherryPies autoreload.py?