[英]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.