鍍金池/ 問答/PHP  Python  HTML/ 如何在flask中運(yùn)行一個(gè)腳本而又不使前端無響應(yīng)?

如何在flask中運(yùn)行一個(gè)腳本而又不使前端無響應(yīng)?

我在flask中運(yùn)行了一個(gè)shell腳本,現(xiàn)在的問題是這個(gè)shell腳本耗時(shí)非常長,運(yùn)行期間會(huì)導(dǎo)致前端web無響應(yīng),必須等到腳本執(zhí)行完。請(qǐng)問有什么辦法可以解決?我試過了用ajax,沒用,因?yàn)檎{(diào)用ajax的url去執(zhí)行腳本時(shí)仍然會(huì)導(dǎo)致頁面卡住。我也試過開多線程app.run(thread=true),這樣雖然可以解決,但是需要新開一個(gè)網(wǎng)頁,我想問下是否有更好的辦法....另外這個(gè)腳本只是單純的在后臺(tái)運(yùn)行即可,相關(guān)回顯不需要渲染到前端。

回答
編輯回答
別硬撐

flask view里面調(diào)用subprocess.Popen去執(zhí)行腳本,subprocess會(huì)生成一個(gè)子進(jìn)程去執(zhí)行腳本,可以立即返回

2018年1月21日 19:37
編輯回答
墨沫

任何軟件工程遇到的問題都可以通過增加一個(gè)中間層來解決

你可以通過 @xdd1874 所說的方法,你可以使用 nohup,反正是只要能啟動(dòng)了你的 shell 的工具都行。

2018年4月30日 01:21
編輯回答
卟乖

可以把 shell 腳本的執(zhí)行交給 celery 去處理。

http://flask.pocoo.org/docs/1...

2018年5月17日 04:20