Django startup code with wsgi lazy loading
我正在使用apache+mod wsgi运行django应用程序。启动Apache时,wsgi似乎总是Lazyloads其应用程序,这意味着启动Apache时不会执行任何代码。只有当第一个请求出现时,整个应用程序才被加载、初始化等并返回给用户。
因为我需要在不依赖第一个请求的情况下运行一些代码,所以我想知道这个"懒惰的加载"是否可以以某种方式关闭或工作?
我尝试了wsgiimportscript virtualhost指令和"wsgilazyinitialization off"服务器1,但如果没有运气,应用程序在第一次请求时仍然会延迟加载。
有什么想法吗?
编辑:要使用正确的配置进行更新,请执行以下操作:
- 在Ubuntu 13.10上运行
- Apache2 2.4.6-2用户2.1
- libapache2 mod wsgi,3.4-4
- Stutup.Py
- 我在/etc/apache2/mods-enabled/wsgi.conf和/etc/apache2/apache2.conf中关闭了"wsgilazyinitialization"。
我在/etc/apache2/sites enabled/000-default.conf中有以下内容:
wsgidaemonprocess lh.test.com进程=2个线程=15显示名称=%组wsgiprocessgroup lh.test.com网站wsgiscriptaalias//home/user/myapp/src/wsgi.pywsgiimportscript/home/user/myapp/src/startup.py进程组=%全局应用程序组=%全局
和startup.py包含:
进口WSGI打印"ZZZZ"
日志中没有显示任何内容…
在gram对这个问题的回答中,when-do-apache2-execute-a-wsgi-script指出了新的mod_wsgi>3处理方法。它(简而言之)将"流程组"和"应用程序组"添加到您的wsgiscriptaalias中
请参见ChangesInVersion0300中的"添加的功能"部分。
---从文件中截取---
对于同时提供了"process group"和"application group"参数的wsgiscriptaalias(而不是wsgiscriptaaliasmatch),既不使用只能在请求处理时计算的扩展变量,这也会导致在进程启动时预加载wsgi脚本文件,而不是仅在f申请的IRST请求到达。
---文件截图结束---
试试这个:(对我有用)
尝试使Apache配置指令如下所示:
1 2 3 4 5 6 7 8 | WSGIScriptAlias / /home/user/myapp/src/wsgi.py \ application-group='%{GLOBAL}' process-group='lh.test.com' WSGIDaemonProcess lh.test.com processes=2 threads=15 display-name=%{GROUP} WSGIProcessGroup lh.test.com # Probably wont need this anymore. #WSGIImportScript /home/user/myapp/src/startup.py \ # process-group='%{GLOBAL}' application-group='%{GLOBAL}' |
现在将您的
最后:如果这对您不起作用,请修改您的问题,使您的配置在代码块中,以使其更具可读性。还包括这些在Apache配置指令中的位置。也就是说,如果它们在virtualhost部分等中,因为存在一些与这些指令出现的位置和顺序相关的规则,如果不包括这些指令,人们将无法看到问题。
干杯