是否可以清空Gearman服务器上的作业队列?我正在使用Gearman的python驱动程序,文档中没有关于清空队列的任何信息。我认为这个功能可能存在,可能与Gearman服务器直接连接。
答案 0 :(得分:12)
我遇到了this method:
/usr/bin/gearman -t 1000 -n -w -f function_name > /dev/null
基本上将所有作业转储到/ dev / null。
答案 1 :(得分:6)
telnetable administrative protocol(搜索“管理协议”)也没有清空队列的命令,只有一个关闭命令。
如果您希望避免停机,可以编写一个通用的“工作消费者”工作人员并使用它来清空队列。我已经设置了一个作为脚本的脚本,它列出了一个工作名称列表,只是坐在那里接受工作并消耗它们。
类似的东西:
# generic_consumer.py job1 job2 job3
您可以使用管理协议的 status 命令获取队列中的函数名称和计数列表。 administrative protocol文档会告诉您响应的格式。
# (echo status ; sleep 0.1) | netcat 127.0.0.1 4730
答案 2 :(得分:5)
据我所知,从文档中使用齿轮手并使用PHP,清除作业队列的唯一方法是重新启动到gearmand作业服务器。如果使用持久作业队列,则还需要清空正在使用的任何持久存储,如果这是数据库存储,则需要清空所有行的相应表。
停止gearmand - >空表行 - >启动gearmand
希望这很清楚。