我有我在本question中提到过的相同代码。现在我在Apache上托管了相同的web.py应用程序。但是当我启动Apache时,if __name__ == "__main__":
中的代码不会被执行。
在Apache中托管时是否可以运行backgroud进程(检查代码的其他问题)?
为什么if __name__ == "__main__":
内的代码没有被执行?
当没有Apache运行web.py时,这种方法很有效。
答案 0 :(得分:3)
if __name__ == '__main__':
内的代码无法运行,因为Apache不是如何运行python代码。
更有可能的是,您在mod_wsgi或uwsgi下运行python,这是让Apache与python通信的一种方式。
保留if __name__ == '__main__':
内容:这对简单测试很有用,但添加类似的块:
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
elif under_mod_wsgi or under_uwsgi:
app = web.application(urls, globals())
application = app.wsgifunc() # !!rather than app.run()
您的Process
内容仍应运行(参考您的其他问题)。
要检测under_mod_wsgi
是否可以:
try:
from mod_wsgi import version
if version:
pass
under_mod_wsgi = True
except ImportError:
under_mod_wsgi = False
try:
import uwsgi
under_uwsgi = True
except ImportError:
under_uwsgi = False