Sidekiq可以阻止哪些可能的原因来处理队列中的作业?队列已满。日志文件sidekiq.log
表明完全没有活动。因此,队列已满,但日志为空,Sidekiq似乎未处理项目。似乎没有工人在处理工作。重新启动Redis或用FLUSHALL或FLUSHDB冲洗均无效。Sidekiq已开始于
捆绑执行程序sidekiq -L log / sidekiq.log
并生成以下日志文件:
2013-05-30..Booting Sidekiq 2.12.0 using redis://localhost:6379/0 with options {}
2013-05-30..Running in ruby 1.9.3p374 (2013-01-15 revision 38858) [i686-linux]
2013-05-30..See LICENSE and the LGPL-3.0 for licensing details.
2013-05-30..Starting processing, hit Ctrl-C to stop
您如何找出问题所在?是否有隐藏的日志文件?
原因是在我们的案例中:Sidekiq可能查找错误的队列。默认情况下,Sidekiq使用名为“默认”的队列。我们使用了两个不同的队列名称,并在config /
sidekiq.yml中定义了它们。
# configuration file for Sidekiq
:queues:
- queue_name_1
- queue_name_2
问题在于,默认情况下,此配置文件 不会 在您的开发环境中通过简单的命令 自动加载
(不同于database.yml
或thinking_sphinx.yml
例如)bundle exec sidekiq
。因此,我们将作业写在两个特定的队列中,而Sidekiq正在等待第三个队列(默认队列)中的作业。您必须通过-C
或--config
选项将路径作为参数传递到配置文件:
bundle exec sidekiq -C ./config/sidekiq.yml
或者,您可以直接传递队列名称(逗号后在此处不允许空格):
bundle exec sidekiq -q queue_name_1,queue_name_2
要找出问题所在,也可以通过选项-v
或--verbose
在命令行中传递或在文件中使用是很有帮助:verbose: true
的sidekiq.yml
。如果未加载配置文件,则配置文件中定义的所有内容当然都是无用的。因此,请确保首先使用正确的配置文件。
目前我正在使用SQS-Lambda集成 Lambda的并发可用。SQS批次设置为1记录,0延迟。 SQS的可见性超时为15分钟,Lambda最大执行时间为15分钟 我会注意到,有时SQS消息在飞行中被卡住,根本没有被任何Lambda处理(它们在15分钟后落入死信队列,CloudWatch显示没有Lambda被消息调用) 有人面临过同样的问题吗? 我在VPC内部运行Lambda,如果这很重要的话
问题内容: 下午好, 我有两个单独的但相关的应用程序。它们都应具有自己的后台队列 (请参阅:独立的Sidekiq和Redis进程) 。但是,我偶尔希望能够将作业从推送到的队列中。 从简单的队列/推送角度来看,如果没有现有的Sidekiq / Redis堆栈,则很容易做到这一点: 但是,考虑到我本来会调用a 和from ,那么在这之间可能需要一步。 显然,我可以直接从Sidekiq内部获取序列化和规
Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 使用方法: 1. 首先将 worker 类放到 app/workers: class HardWorker include Sidekiq::Worker def perform(name, count) # do something endend 2. 在控制器 action 或者 model 中调用 Hard
问题内容: Python的多处理程序包中的队列和管道之间的根本区别是什么? 在什么情况下应该选择一种?什么时候使用比较有利?什么时候使用比较有利? 问题答案: A只能有两个端点。 一个可以有多个生产者和消费者。 何时使用它们 如果您需要两个以上的交流点,请使用。 如果您需要绝对的性能,那么a会更快,因为它建立在之上。 绩效基准 假设您要生成两个进程并在它们之间尽快发送消息。这些是使用和进行类似测试
问题内容: 我正在尝试在Python中的多处理库中使用队列。执行下面的代码后(打印语句起作用),但是在调用Queue上的join之后,这些进程没有退出,并且仍然存在。我如何终止其余过程? 谢谢! 问题答案: 尝试这个:
我有两个消费者(不同的应用程序)连接到Azure队列。我可以或消息,在消费过程中,我可以或消息。裁判:http://msdn.microsoft.com/en-us/library/azure/hh851750.aspx. 我确定我想使用,然后消息,因为我希望它们在两个应用程序中被接收。我想我应该将队列上的消息生存期设置为10秒,作为删除机制。 然而,由于消息似乎在10秒钟后被删除,因此在这10秒