当前位置:  开发笔记 > 后端 > 正文

Sidekiq是否按照发送给工人的顺序执行工作?

如何解决《Sidekiq是否按照发送给工人的顺序执行工作?》经验,为你挑选了1个好方法。

我有一个rake任务,它将按顺序调用另外4个rake任务:

rake:one
rake:two
rake:three
rake:four

一个,两个和三个Rake任务正在获取数据并将其添加到我的数据库中.然后rake:four将对该数据做一些事情.但我需要确保首先完成一,二和三.每个rake任务实际上都是让Sidekiq工作人员在后台运行.在这种情况下,是否所有工人都rake:one先完成,然后rake:two等等?

如果没有,我如何确保工人按顺序执行?



1> Nathan..:

Sidekiq按创建顺序处理作业,但是默认情况下,它会同时处理多个作业,并且不能保证给定的作业将在另一个作业开始之前完成。

从https://github.com/mperham/sidekiq/wiki/FAQ引用:

如何串行处理某个队列?

设计无法做到。Sidekiq专为异步处理作业而设计,这些作业可以独立完成并且彼此独立。作业将按推送的顺序从Redis中弹出,但不能保证作业#1在作业#2启动之前将完全执行。

如果需要串行执行,则应研究提供这些保证类型的其他系统。

请注意,您可以创建一个Sidekiq进程,专用于用单个工作程序处理队列。这将为您提供串行执行,但这是一个hack。

还要注意,您可以对sidekiq使用第三方扩展来实现该目标。

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有