我想知道在一个worker上调用perform_async但是sidekiq(bundle exec sidekiq
)没有运行时会发生什么?
在我的应用程序中,我有一些观察员在我的某个模型触发时要求sidekiq完成工作(即在某些情况下创建,更新或销毁)。
我还有一个rake任务,它根据我拥有的一些数据为我构建一个数据库。当这个任务运行时,它会创建几个记录来触发我的观察者然后在sidekiq队列中推送作业。
出于测试目的,我在没有打开sidekiq的情况下运行了这个任务,它工作正常,我的数据被推入了mysql!
我知道问自己,我的观察员告诉我的工作人员要做的工作是怎么回事?它还在做吗?它是完成但不是异步的吗?是不吗?
答案 0 :(得分:1)
简单回答:没有完成。它将在稍后完成
正如它自己所说的那样,它把它放在que
中。当您打开sidekiq
时,它将读取que
中的所有数据并执行所有任务。
但为了实现这一目标,您需要Redis
工作。 Redis
负责将数据保存在一个que中,它是一种内存。如果没有Redis
,您将收到错误。