2017-02-01 50 views
2

我有這個代碼,我在這個question中提到我的。現在我已經在Apache上託管了相同的web.py應用程序。但是當我啓動Apache時,if __name__ == "__main__":內的代碼不會被執行。Apache上的web.py無法運行代碼,如果__name__ ==「__main__」:

在Apache中託管時是否可以運行後臺進程(檢查代碼的其他問題)?

爲什麼if __name__ == "__main__":裏面的代碼沒有執行?

當web.py在沒有Apache的情況下運行時,這很好。

+0

這個問題將在http://modwsgi.readthedocs.io/en/develop/user-guides/assorted-tips-and-tricks.html討論你可以在WSGI腳本文件(僅)中使用'__name __。startswith('_ mod_wsgi _')''。 –

回答

3

if __name__ == '__main__':內部的代碼無法運行,因爲這不是Apache運行Python代碼的方式。

更可能的是,你正在mod_wsgi或uwsgi下運行你的python,這是一種讓python與Apache通話的方式。

保持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 
相關問題