Resque未运行工作程序以从队列中获取作业 - Rails

4
我有一个需要运行的Resque作业。我尝试通过发出命令将我的作业排队到队列中: Resque.enqueue("QUEUE", params) 它会将作业推送到队列中。我尝试在本地主机上运行Resque接口:localhost:3000/resque。它显示了待处理的作业,但也显示没有正在运行的工作者。我通过命令运行rake任务来启动工作者: QUEUE='*' bundle exec rake resque:work 我的Redis实例是Resque.redis = #<Redis::Namespace:0x007f82183d0120 @namespace=:resque, @redis=#<Redis client v2.2.2 connected to redis://localhost:6379/0 (Redis v0.07)>>
当我尝试运行该rake任务时,也没有收到任何错误。如果您需要进一步的信息,请告诉我。

你需要知道使用哪个版本的 Resque,并且尝试调用 Resque.enqueue([Some Class], params) 方法,例如 Resque.enqueue(Archive, self.id, branch) 这里的 Archive 是一个 worker 类。 - Viren
Resque的版本是v1.20.0。我会尝试一下看看。谢谢。 - nizha
1个回答

1
希望这篇旧文章能帮助到路过的人。如果你使用了resque-lockresque-queue-lock,你的队列可能会被锁定,而且可能无法释放,因为在释放锁之前进程可能已经被杀死。在我们的情况下,我们找到了所有的锁。
Resque::Plugins::Queue::Lock.all_queue_locks

找到需要删除的那个,然后从redis中删除该键即可。

Resque.redis.del(the_key_name)

上面的the_key_name是你在前一步中找到的确切字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接