如何在完成后自动重新运行 python 程序?主管?

How to automatically rerun a python program after it finishes? Supervisord?

我有一个 python 程序,我想不断 运行 更新和收集新数据。本质上,我正在从一堆域中收集数据。我的处理器需要大约一天半的时间才能 运行。一旦他们完成,我希望他们自动重新开始。

我不想使用 while 循环来重新启动进程而不先杀死所有相关的东西,因为我用来支持这些处理器的一些包(主要是 pyV8)有一个问题内存慢慢积累,我不是一个足够好的程序员来调试像这样的大包中的内存泄漏。所以,我需要所有相关进程成功死掉,然后再复活。

我听说 supervisord 可以做这种类型的工作,但不喜欢弄乱 .conf 文件,宁愿把所有东西都放在 python 里。

总结:是否有一个包可以用 script/package 杀死所有相关进程,我可以用它来放入 while 循环或在 [= 中创建这种行为25=]脚本?

我不明白你为什么不能使用 supervisord。配置非常简单,非常灵活,不限于 python 个程序。

例如,您可以创建文件 /etc/supervisor/conf.d/myprog.conf:

[program:myprog]
command=/opt/myprog/bin/myprog --opt1 --opt2
directory=/opt/myprog
user=myuser

然后重新加载主管的配置:

$ sudo supervisorctl reload

它已经打开了。还不够简单吗?

有关 supervisord 配置的更多信息:http://supervisord.org/subprocess.html