Apache / mod wsgi if __name__ =='__ main__'等效

时间:2015-08-19 17:32:27

标签: python apache mod-wsgi web.py

要为我使用leveldb(python数据库),我只需要在启动服务器时加载数据库,而不是每次用户使用我的网站时加载。

之前我使用了web.py和if __name__ == '__main__'语句来实现这一点。切换到Apache后,__name__变量始终为modwsgi_....

有人可以为我提供一个可以与Apache和modwsgi配合使用的替代方案吗?

1 个答案:

答案 0 :(得分:1)

__name__的值的格式为_mod_wsgi_?????,因此请使用:

if __name__.startswith('_mod_wsgi_'):
    ...

更好的是,使用与仅由mod_wsgi使用的其他所有内容不同的WSGI脚本文件。因此,创建一个app.wsgi文件,然后从其他地方导入您的应用程序对象。然后,您不需要检查,可以在全球范围内进行加载。

只要确保在任何一种情况下都使用守护进程模式,就像在嵌入模式下一样,如果WSGI脚本文件的修改时间发生变化,那么在过程的生命周期中,WSGI脚本文件可以在技术上加载多次。在守护进程模式下,这不会发生,因为更改WSGI脚本文件将导致整个进程被关闭并重新加载。

顺便说一句,如何知道mod_wsgi是否正在运行: