Python module being reloaded for each request with django and mod_wsgi

跟風遠走 提交于 2019-12-24 14:53:18

问题


I have a variable in init of a module which get loaded from the database and takes about 15 seconds.

For django development server everything is working fine but looks like with apache2 and mod_wsgi the module is loaded with every request (taking 15 seconds).

Any idea about this behavior?

Update: I have enabled daemon mode in mod wsgi, looks like its not reloading the modules now! needs more testing and I will update.


回答1:


You were likely ignoring the fact that in embedded mode of mod_wsgi or with mod_python, the application is multiprocess. Thus requests may go to different processes and you will see a delay the first time a process which hasn't been hit before is encountered. In mod_wsgi daemon mode the default has only a single process. That or as someone else mentioned you had MaxRequestsPerChild set to 1, which is a really bad idea.




回答2:


I guess, you had a value of 1 for MaxClients / MaxRequestsPerChild and/or ThreadsPerChild in your Apache settings. So Apache had to startup Django for every mod_python call. That's why it took so long. If you have a wsgi-daemon, then a restart takes only place if you "touch" the wsgi script.



来源:https://stackoverflow.com/questions/3025378/python-module-being-reloaded-for-each-request-with-django-and-mod-wsgi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!