我有兩個腳本運行,一個端口:80和一個端口:81。由於我們的一些用戶在端口爲81的服務器上發生了一些問題,我試圖實現這樣的解決方法;子進程不會等待,並使PhantomJS崩潰
做它的老方式,這對於大多數用戶正常工作:
- AngularJS應用使得請求
example.com:81/getpdf/1
- 瓶服務器產生使用兩個單獨的
subprocess.Popen
電話PNG和使用PhantomJS PDF文件和ImageMagick的和.wait()
方法 - 使用Flask的
send_file()
,PDF被髮回給用戶並開始下載
我對這個問題的解決方法:
- AngularJS使得請求
example.com/getpdf/1
- 瓶服務器(
:80
)做出新的GET請求,r = requests.get(url_with_port_81)
,僞造老AngularJS請求創建PNG/PDF - 而不是使用
send_file()
的,我現在返回生成PDF的路徑, - 我回到
send_file(r.text)
現在,使用我的解決方法,我運行創建PNG/PDF的子流程以某種方式崩潰。我必須sudo pkill python
,並且只有當我這樣做時,我纔會得到一個PNG,但服務器上的文件夾中沒有數據。
基本上,PhantomJS已經運行,但沒有加載任何數據(只有HTML/CSS,但沒有重要的東西,需要來自Flask服務器)和崩潰。這怎麼可能?我只是假裝瀏覽器使用requests.get
的請求,或者我不知道這裏的東西?
我以爲subprocess.Popen
是非阻塞,所以我的數據請求仍然可以回答填充PNG/PDF?
對不起,很難確定這裏發生了什麼,特別是因爲我們沒有看到任何這樣做的代碼。你有一件事(一個應用程序)調用另一件事(另一個應用程序)做另一件事(一個使用PhantomJS和ImageMagick的過程)。看看你是否可以刪除件,直到你最低限度,你可以發佈,我們可以運行復制問題。否則,我們很難幫助你。 –