要为我使用leveldb(python数据库),我只需要在启动服务器时加载数据库,而不是每次用户使用我的网站时加载。
之前我使用了web.py和if __name__ == '__main__'
语句来实现这一点。切换到Apache后,__name__
变量始终为modwsgi_....
。
有人可以为我提供一个可以与Apache和modwsgi配合使用的替代方案吗?
答案 0 :(得分:1)
__name__
的值的格式为_mod_wsgi_?????
,因此请使用:
if __name__.startswith('_mod_wsgi_'):
...
更好的是,使用与仅由mod_wsgi使用的其他所有内容不同的WSGI脚本文件。因此,创建一个app.wsgi
文件,然后从其他地方导入您的应用程序对象。然后,您不需要检查,可以在全球范围内进行加载。
只要确保在任何一种情况下都使用守护进程模式,就像在嵌入模式下一样,如果WSGI脚本文件的修改时间发生变化,那么在过程的生命周期中,WSGI脚本文件可以在技术上加载多次。在守护进程模式下,这不会发生,因为更改WSGI脚本文件将导致整个进程被关闭并重新加载。
顺便说一句,如何知道mod_wsgi是否正在运行: