python - Supervisord 监听器:每 10 分钟执行一次 symfony 命令
问题描述
我正在尝试使用supervisord侦听器每 N 分钟运行一次命令。我有一个订阅了TIC_60事件的监听器。
我怎样才能延迟我的命令的执行,比如说 10 分钟。
主管监听器
[eventlistener:my-listener]
command=/tmp/my-listener.py php /var/www/symfony/bin/console my-symfony-command
events=TICK_60
侦听器脚本
#! /usr/bin/python
import sys
import subprocess
def write_stdout(s):
sys.stdout.write(s)
sys.stdout.flush()
def write_stderr(s):
sys.stderr.write(s)
sys.stderr.flush()
def main(args):
while 1:
write_stdout('READY\n') # transition from ACKNOWLEDGED to READY
line = sys.stdin.readline() # read header line from stdin
write_stderr(line) # print it out to stderr
headers = dict([ x.split(':') for x in line.split() ])
data = sys.stdin.read(int(headers['len'])) # read the event payload
res = subprocess.call(args, stdout=sys.stderr); # don't mess with real stdout
write_stderr(data)
write_stdout('RESULT 2\nOK') # transition from READY to ACKNOWLEDGED
if __name__ == '__main__':
main(sys.argv[1:])
import sys
解决方案
最后,我使用 PHP 和共享内存中的侦听器制作了自己的解决方案。在它所控制的监听器上,TICK_60 已经被触发了 10 次,因此可以认为已经过去了 10 分钟。
控制有 10 个触发事件的计数器保存在共享内存中。
推荐阅读
- php - 如何在页面中嵌入 phpinfo() 而不影响该页面的 CSS 样式
- c - OMP 分析中的依赖关系
- wordpress - 将图像从 GitHub 上传到 WordPress 网站
- java - 如何忽略 Sonar 中的重复代码报告?
- docker - 通过卷在容器之间共享数据
- c++ - Visual Studio 2017 中的读取或写入访问冲突
- cassandra - Cassandra 在插入多个表时回滚
- vba - 共享文件时保留链接图像的 Powerpoint 代码
- javascript - Expo:如何在应用程序的多个安装中保留数据
- javascript - 验证文本输入中的 URL