![](/img/trans.png)
[英]Python subprocess.Popen() with Pygame , how to tell Pygame wait untill subprocess is done
[英]Subprocess.Popen wait untill the child finish
我正在開發基於CGI,Apache2,python(2.76)的網絡工具。 Web服務器在Ubuntu虛擬機上。 用戶提交作業后,我希望服務器立即返回網頁,顯示指向即將發布的結果的鏈接。 因為計算將花費一些時間,所以我使用Subprocess.Popen來調用一個函數,該函數可以完成所有計算。 下面顯示了我的代碼流程。 我在自己的(Mac)計算機上進行了測試,它可以在計算完成之前立即返回一個網頁。 但是在Ubuntu虛擬機上,它將返回頁面,直到計算完成。 Subprocess.Popen在Ubuntu上不起作用嗎?
Main()
preprocess
return_a_wen_page
Subprocess.Popen(function_do_calculation)
subprocess.Popen
可在Ubuntu上使用。 問題可能是您從Apache調用它。 您可以嘗試重定向標准流:
with open(os.devnull, 'r+b', 0) as DEVNULL:
subprocess.Popen(cmd, stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL,
close_fds=True)
如果沒有幫助,還添加preexec_fn=os.setsid
( start_new_session=True
模擬)。 或者只是發送一條消息((unix)套接字,命名管道)到可以在其上調用subprocess.Popen
進程的計算機上獨立運行的守護進程。請自由打開而不是cgi腳本(請考慮是否像celery
這樣的東西可以為您簡化它)。
這是我第一次做Web應用程序,我不知道mod_wsgi。
with open(os.devnull, 'r+b', 0) as DEVNULL:
subprocess.Popen(cmd, stdin=DEVNULL, stdout=DEVNULL, stderr=DEVNULL,close_fds=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.