簡體   English   中英

中間有Python多處理模塊

[英]Python multiprocessing dies in the middle

我在CentOS VPS服務器上運行python程序。 我過去幾個月一直在運行該程序,並且從一開始就面臨着這個問題。

我通常從crontab運行此python程序。 該程序每天按順序執行以下操作。

  1. 連接到MySQL數據庫並更新一些特定信息。
  2. 使用multiprocessing分成8-10個python實例。
  3. 每個實例都使用Xvfb (運行firefox必需)運行虛擬顯示。
  4. 每個實例都運行單獨的firefox瀏覽器。
  5. 每個實例都訪問一個網站以檢查一些數據的更新(使用selenium ),如果它有任何更改,它會更新到數據庫。
  6. 檢查每個實例后,關閉firefox

如果運行正常,所有這些過程通常需要60分鍾到90分鍾。 但是問題在於它並非每次都能正常運行。 有時它運行有時會死在中間。 我也從未發現任何具體原因,這些程序為何死掉以及我應該怎么做。 當我檢查topps ,我發現python程序不存在,並且firefoxXvfb仍然在那里,像傻瓜一樣在等待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服務器上運行此程序的原因。

另外,我使用pythonfirefoxseleniumXvfb以及另一個進程運行另一個程序,它可以正常運行10到12個小時而不會打h。 此外,該程序執行的功能幾乎與第一個相同,但不同之處在於,它僅運行單個進程。 而且,它永遠不會像第一個那樣造成任何麻煩。

有什么辦法可以確認它每次都能正常運行該程序?

我也面臨同樣的問題。 經過大量研究,我得出結論,Firefox不是用於多處理的好選擇。 最好使用PhantomJSChrome驅動程序 就我而言,當我看到ps或top時,我正在獲取Zombie Firefox進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM