首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Gearman作业服务器中删除所有Gearman作业

从Gearman作业服务器中删除所有Gearman作业
EN

Stack Overflow用户
提问于 2011-08-16 20:36:36
回答 2查看 17.9K关注 0票数 14

有没有办法从Gearman作业服务器中删除所有Gearman作业?我有一个在后台运行Gearman作业的PHP应用程序。对于我的单元测试,我需要确保a)没有作业等待执行它的worker,b)没有worker在工作。后者并不那么重要,因为它很容易杀死工人,但前者--我不知道如何实现它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-13 20:00:14

正在删除所有单一类型的作业

使用以下命令(只需替换FUNCTION_NAME):

代码语言:javascript
复制
gearman -n -w -f FUNCTION_NAME > /dev/null

要仅删除n数量的作业,请添加-c n参数,即删除20个作业:

代码语言:javascript
复制
gearman -c 20 -n -w -f FUNCTION_NAME > /dev/null

正在从服务器中删除所有作业

如果要删除所有作业,请运行以下循环:

代码语言:javascript
复制
for MATCH in $(echo status | nc 127.0.0.1 4730 | grep -v \\. |  grep -Pv '^[^\t]+\t0\t' | cut -s -f 1-2 --output-delimiter=\,); 
do 
    gearman -n -w -f ${MATCH%\,*} -c ${MATCH#*\,} > /dev/null;
done

用您的gearmand服务器地址和端口替换127.0.0.1 4730

ps:从持久性存储(即sqlite)中删除作业在重新启动之前不会从gearmand中删除它们(因为gearmand进程有内存缓存)

票数 34
EN

Stack Overflow用户

发布于 2011-08-31 21:43:54

使用Persisten Queues很简单,只需截断队列表即可。

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

https://stackoverflow.com/questions/7078282

复制
相关文章

相似问题

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