如果 __name__ == "__main__",托管在 Apache 上的 web.py 不会 运行 代码:

web.py hosted on Apache does not run code in side if __name__ == "__main__":

我有与我在 中提到的相同的代码。现在我在 Apache 上托管了相同的 web.py 应用程序。但是当我启动 Apache 时,if __name__ == "__main__": 中的代码没有被执行。

在 Apache 中托管时,是否可以 运行 后台进程(检查代码的其他问题)?

为什么if __name__ == "__main__":里面的代码没有执行?

当 web.py 为 运行 且没有 Apache 时,此方法运行良好。

if __name__ == '__main__': 中的代码不会 运行 因为那不是 Apache 运行s 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