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

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

我在flask中運(yùn)行了一個(gè)shell腳本,現(xiàn)在的問(wèn)題是這個(gè)shell腳本耗時(shí)非常長(zhǎng),運(yùn)行期間會(huì)導(dǎo)致前端web無(wú)響應(yīng),必須等到腳本執(zhí)行完。請(qǐng)問(wèn)有什么辦法可以解決?我試過(guò)了用ajax,沒(méi)用,因?yàn)檎{(diào)用ajax的url去執(zhí)行腳本時(shí)仍然會(huì)導(dǎo)致頁(yè)面卡住。我也試過(guò)開多線程app.run(thread=true),這樣雖然可以解決,但是需要新開一個(gè)網(wǎng)頁(yè),我想問(wèn)下是否有更好的辦法....另外這個(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
編輯回答
墨沫

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

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

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

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

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

2018年5月17日 04:20