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