我有一個python腳本。 主線程(如果名稱 =='主要'等):當主線程啓動時,它會運行多個線程來偵聽數據流,事件並處理它們。主線程然後開始運行Flask應用程序(app.run())。處理和數據發送到前端Flask應用程序(這裏沒有問題)Apache服務器上的多線程Flask應用程序
Apache服務器和mod_wsgi需要我直接導入應用程序,這意味着我的其他線程不會運行。
我的困境。在我見過的例子中,.wsgi腳本from someapp imports app as application
。這隻會運行燒瓶應用程序。如果我設法以某種方式運行python腳本而不是main,那麼瓶型應用程序默認運行在localhost:5000上,建議不要在生產中更改或使用.run()。
首先,是否有可能在當前結構中的服務器上獲得此應用程序?我如何讓整個應用程序在服務器上工作?我需要徹底重組嗎?是不是可以指定主機:0.0.0.0端口:80然後運行python腳本,而不是隻導入應用程序?任何幫助表示讚賞,任何轉發到其他文件。
編輯:爲了測試的目的,我將使用AWS Ubuntu(如果需要,可以使用其他任何Linux發行版)。
我覺得有一個誤解。在我看到的所有示例和文檔中,在.wsgi文件中,它們都是「從某些應用程序導入應用程序的應用程序」。在我的情況下,someapp需要使用其他線程中存在的數據。如果我導入,我會不會創建它的一個實例,數據會丟失/它是無效的。 如果我運行了整個腳本,它只會默認在本地主機上顯示,並且像您所說的那樣,甚至不建議在生產中使用app.run()。 –
只要確保您使用mod_wsgi守護進程模式並且不要設置「進程」選項。然後它將使用一個進程,所有線程仍然能夠看到相同的數據。 –