2016-07-19 8 views
0

perform_asyncがワーカーで呼び出されたのにsidekiq(bundle exec sidekiq)が実行されていないときに何が起こったのだろうと思いましたか?perform_asyncが呼び出されましたが、sidekiqが実行されていない場合はどうなりますか?

私のアプリでは、自分のモデルの1つがトリガー(つまり、場合によっては作成、更新、破棄)されたときにsidekiqに仕事を依頼するオブザーバーがいくつかあります。

私はまた、このタスクが実行されている場合...私が持っているいくつかのデータからデータベースを構築するrakeタスクを持って、それがその後、sidekiqキュー内のジョブをプッシュする私のオブザーバーを誘発するいくつかのレコードを作成します。

私はサイドキックをオンにしないでこのタスクを実行しましたが、うまくいきました。私のデータはmysqlにプッシュされています!

私の観察者が私の労働者にするように指示している仕事には何が起きているのですか?それはまだ終わったのですか?それは行われますが、非同期ではありませんか?それはではないが完了しましたか?

答えて

1

かんたん回答:されていません。それは後で行われます

それはそれがqueにそれを入れていると言っています。 sidekiqをオンにすると、すべてのデータがqueから読み込まれ、すべてのタスクが実行されます。

これが機能するには、Redisが必要です。 Redisは、データをキューに保存する責任があります。これは一種のメモリです。 Redisを入力しないと、エラーが発生します。

+0

だから、これは私がsidekiqをオンにするまで、そのすべてが、Redisのサーバーに格納され、それがオンにない場合、それはsidekiqするためにそれらをプッシュすることを意味しますか? – Naarsh

+0

はい、それは良いですが、なぜまさに、これは、なぜそれが – Nermin

+0

よし非同期(async)と呼ばれています!これは非常に有用なおかげでたくさんあり:) – Naarsh

関連する問題