是否可以清空Gearman服务器上的作业队列

时间:2010-12-22 15:50:01

标签: python message-queue gearman

是否可以清空Gearman服务器上的作业队列?我正在使用Gearman的python驱动程序,文档中没有关于清空队列的任何信息。我认为这个功能可能存在,可能与Gearman服务器直接连接。

3 个答案:

答案 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

希望这很清楚。