如何在完成后自动重新运行 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
我有一个 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