[英]Python multiprocessing dies in the middle
我在CentOS VPS服務器上運行python
程序。 我過去幾個月一直在運行該程序,並且從一開始就面臨着這個問題。
我通常從crontab運行此python程序。 該程序每天按順序執行以下操作。
MySQL
數據庫並更新一些特定信息。 multiprocessing
分成8-10個python實例。 Xvfb
(運行firefox必需)運行虛擬顯示。 selenium
),如果它有任何更改,它會更新到數據庫。 firefox
如果運行正常,所有這些過程通常需要60分鍾到90分鍾。 但是問題在於它並非每次都能正常運行。 有時它運行有時會死在中間。 我也從未發現任何具體原因,這些程序為何死掉以及我應該怎么做。 當我檢查top
或ps
,我發現python
程序不存在,並且firefox
& Xvfb
仍然在那里,像傻瓜一樣在等待python命令。
可能由於過載或其他原因而被系統殺死。 有時重啟系統會有所幫助。 但是,我知道這不是一個好的解決方案。 這就是為什么我嘗試運行該程序以降低最低級別的niceness值的原因。 但是,程序可能無法以負的niceness
值運行,因此仍然存在相同的問題。
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 12673 12655 0 80 0 - 54957 wait ? 00:00:00 python
1 S 500 12683 12673 0 80 0 - 62766 sk_wai ? 00:00:18 python
1 S 500 12704 12673 0 80 0 - 59295 sk_wai ? 00:00:17 python
1 S 500 12816 12673 0 80 0 - 59230 sk_wai ? 00:00:16 python
1 S 500 12898 12673 0 80 0 - 59400 sk_wai ? 00:00:16 python
1 S 500 12988 12673 0 80 0 - 59491 sk_wai ? 00:00:17 python
1 S 500 13072 12673 0 80 0 - 59151 sk_wai ? 00:00:17 python
同樣,我已經在Windows 8桌面上運行了該程序,並且最多可以運行26個實例(我從未嘗試過更多:))。 由於它正在運行,因此一次頁面加載的實例變多了。 這就是為什么我嘗試通過拆分作業在3 VPS服務器上運行此程序的原因。
另外,我使用python
, firefox
, selenium
, Xvfb
以及另一個進程運行另一個程序,它可以正常運行10到12個小時而不會打h。 此外,該程序執行的功能幾乎與第一個相同,但不同之處在於,它僅運行單個進程。 而且,它永遠不會像第一個那樣造成任何麻煩。
有什么辦法可以確認它每次都能正常運行該程序?
我也面臨同樣的問題。 經過大量研究,我得出結論,Firefox不是用於多處理的好選擇。 最好使用PhantomJS或Chrome驅動程序 。 就我而言,當我看到ps或top時,我正在獲取Zombie Firefox進程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.