首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将监督管理程序配置为在调度重新启动之前等待X秒?

如何将监督管理程序配置为在调度重新启动之前等待X秒?
EN

Server Fault用户
提问于 2014-06-29 18:34:33
回答 2查看 29.9K关注 0票数 12

我有一个工作进程,它一次处理一个RabbitMq消息。现在,当工作人员退出时,supervisord正在重新启动它(这将处理下一条消息)。

我想设置一个间隔X秒,这样监督系统不会永久地重新启动,但是它在启动另一个工人之前需要等待一定的时间。

这个是可能的吗?多么?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2014-06-29 20:22:57

没有办法在主管程序部分指定时间间隔,但您可以做的是在代码中放入“休眠()”,以便在程序完成消息处理后等待指定的时间段。

如果您不想/不能更改程序代码,可以尝试将其封装到bash脚本中,例如:

代码语言:javascript
复制
#!/bin/bash
/usr/local/bin/myprogram
sleep 30

并修改您的主管程序部分以运行该脚本,而不是您的程序:

代码语言:javascript
复制
command=/usr/local/bin/myprogram.sh
票数 12
EN

Server Fault用户

发布于 2015-11-17 20:55:59

我需要一种简单的方法来从没有cron的码头容器中运行命令。我用的是:

代码语言:javascript
复制
[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,2

startsecs =0确保主管认为命令已成功启动,即使它在几秒后退出。否则,主管将停止重新启动,认为这是一个循环。

下面是上面的示例在/root/date.ts中看到的内容:

代码语言:javascript
复制
# 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,则此解决方案也很有用。

票数 10
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/608804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档