我有一个工作进程,它一次处理一个RabbitMq消息。现在,当工作人员退出时,supervisord正在重新启动它(这将处理下一条消息)。
我想设置一个间隔X秒,这样监督系统不会永久地重新启动,但是它在启动另一个工人之前需要等待一定的时间。
这个是可能的吗?多么?
发布于 2014-06-29 20:22:57
没有办法在主管程序部分指定时间间隔,但您可以做的是在代码中放入“休眠()”,以便在程序完成消息处理后等待指定的时间段。
如果您不想/不能更改程序代码,可以尝试将其封装到bash脚本中,例如:
#!/bin/bash
/usr/local/bin/myprogram
sleep 30并修改您的主管程序部分以运行该脚本,而不是您的程序:
command=/usr/local/bin/myprogram.sh发布于 2015-11-17 20:55:59
我需要一种简单的方法来从没有cron的码头容器中运行命令。我用的是:
[program:runevery]
directory = /my/workdir
command = sh -c "sleep 5;date >>/root/test.ts"
stdout_logfile = /var/log/supervisor/%(program_name)s.log
stderr_logfile = /var/log/supervisor/%(program_name)s.log
autorestart = true
startsecs = 0
exitcodes = 0,1,2startsecs =0确保主管认为命令已成功启动,即使它在几秒后退出。否则,主管将停止重新启动,认为这是一个循环。
下面是上面的示例在/root/date.ts中看到的内容:
# tail -f /root/test.ts
Tue Nov 17 20:42:58 UTC 2015
Tue Nov 17 20:43:04 UTC 2015
Tue Nov 17 20:43:10 UTC 2015
[...]根据您的喜好调整睡眠,并将'date >>/root/test.ts‘替换为您需要的任何内容。
如果您需要比每分钟更频繁地运行cronjob,则此解决方案也很有用。
https://serverfault.com/questions/608804
复制相似问题