繁体   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