sed*_*nym 7 apache django mod-wsgi
这是我在mod_wsgi中运行Django 1.7的所有网站上遇到的问题.该问题的核心是,如果在本地开发时,我在代码库中引入致命错误,然后随后对其进行更正,则代码监视脚本不会检测到更正.
我使用Graham Dumpleton的monitor.py脚本来检测我在本地开发时对代码库的更改(我使用apache而不是Django开发服务器).
它总是用于Django <= 1.6,但在Django 1.7中我收到以下错误:
File "/home/me/.virtualenvs/myvirtualenv/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
django.setup()
File "/home/me/virtualenvs/myvirtualenv/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/me/.virtualenvs/myvirtualenv/lib/python2.7/site-packages/django/apps/registry.py", line 78, in populate
raise RuntimeError("populate() isn't reentrant")
RuntimeError: populate() isn't reentrant
Run Code Online (Sandbox Code Playgroud)
令人恼火的是,如果我更正错误,monitor.py不会检测到更改,所以我必须重新启动apache,或者触摸已经加载的另一个文件(例如设置文件).
我认为这是因为"重载代码只监视导入的文件(也称为sys.modules)"(源代码).因此,由于未成功导入错误的文件,monitor.py无法重新启动该进程.
我不确定您的部署过程是什么,也不确定您的生产操作系统是什么,但在 Linux/Ubuntu 世界中有一个名为 pyclean 的操作系统命令。在我的 Django/Python 部署脚本(通常通过 Fabric)期间,我发出命令“pyclean”。在项目根目录中。此脚本递归删除当前文件夹中开始的所有 .pyc 文件。我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |