调用perform_async但sidekiq未运行时会发生什么?

时间:2016-07-19 14:13:56

标签: ruby-on-rails sidekiq

我想知道在一个worker上调用perform_async但是sidekiq(bundle exec sidekiq)没有运行时会发生什么?

在我的应用程序中,我有一些观察员在我的某个模型触发时要求sidekiq完成工作(即在某些情况下创建,更新或销毁)。

我还有一个rake任务,它根据我拥有的一些数据为我构建一个数据库。当这个任务运行时,它会创建几个记录来触发我的观察者然后在sidekiq队列中推送作业。

出于测试目的,我在没有打开sidekiq的情况下运行了这个任务,它工作正常,我的数据被推入了mysql!

我知道问自己,我的观察员告诉我的工作人员要做的工作是怎么回事?它还在做吗?它是完成但不是异步的吗?是吗?

1 个答案:

答案 0 :(得分:1)

简单回答:没有完成。它将在稍后完成

正如它自己所说的那样,它把它放在que中。当您打开sidekiq时,它将读取que中的所有数据并执行所有任务。

但为了实现这一目标,您需要Redis工作。 Redis负责将数据保存在一个que中,它是一种内存。如果没有Redis,您将收到错误。