問題タブ [sucker-punch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
621 参照

ruby-on-rails - Rails と sucker_punch: ジョブを実行する x 秒前にデバウンスして実行速度を制御する

私の Rails 3.2 プロジェクトでは、SuckerPunchを使用して、モデルの作成/更新時に高価なバックグラウンド タスクを実行しています。

ユーザーは、このモデルでさまざまなタイプの対話を行うことができます。ほとんどの場合、これらの更新は十分な間隔で行われますが、並べ替えや一括更新などの他のアクションでは、これらの POST 要求が非常に頻繁に受信される可能性があり、そのときにサーバーが圧倒されます。

私の質問は、最初の更新が発生したときにバックグラウンド ジョブを開始するための最もエレガントでスマートな戦略は何かということですが、たとえば10 秒待って、そのモデル (行ではなくテーブル) に更新が来ていないことを確認してから、ジョブを実行します。したがって、キューに入れずに効果的にスロットリングします。

私のsucker_punchワーカーは次のようになります。

Marker「マップ」モデルから呼び出され、update_all場合によっては次のようにコントローラーから呼び出されます。

したがって、バックグラウンド ジョブを実行するためのかなり標準的なセットアップです。x secondsモデル (またはテーブル)の更新がなくなるまで、ジョブを待機させるかスケジュールしないようにするにはどうすればよいですか?

それが役立つ場合、Map has_many Markersはロジックを使用してジョブをトリガーするため、マップ更新のマーカーの関連付けも問題ありません。

0 投票する
1 に答える
1052 参照

ruby-on-rails - Rails Sucker Punch - ホームページにアクセスせずにジョブを開始するには?

インデックス ページを読み込まずに、SuckerPunch のバックグラウンド ジョブを開始する方法を見つけようとしています。

今、私がしていることは次のとおりです。

$ rails server #localhost:3000 でサーバーを起動します

次に、ブラウザの URL に移動し、localhost:3000 と入力します。

これにより、SuckerPunch ジョブがトリガーされ、実行が開始されます。

私のapplication_controller.rb

そこでジョブを呼び出します。私が望むものを達成できるように、それらを置くことができる別の場所があるのではないかと考えています.

httpリクエストではなく、サーバーの起動時にジョブを開始します。

0 投票する
2 に答える
862 参照

ruby-on-rails - 未定義のメソッド `async' (suckerpunch gem)

私は sucker_punch gem を使用して Rails アプリのバックグラウンドでメールを送信しています。以前は正常に動作していましたが、突然次のエラーが発生しました。

以下は、完全なエラーのスクリーンショットです。

ここに画像の説明を入力

現在、sucker_punch バージョン 2.0.1 を使用しています。ダウングレードして、代わりに sucker_punch バージョン 1.6.0 を使用しようとしましたが、エラーが続きます。

何か助けはありますか?ありがとう!

0 投票する
0 に答える
555 参照

ruby-on-rails - ActiveJob キュー アダプタは無視されますか?

user_controller.rb

my_job.rb

config/initializer/sucker_punch.rb

Rails コンソールで実行するMyJob.perform_laterと、すべて正常に動作し、ロガーにこのメッセージが表示されますEnqueued MyJob (Job ID: 6c857af8-a8ed-4bd0-918b-4296c4315727) to SuckerPunch(default)

ただし、 http リクエストをuser_controllerに送信すると、 3 秒以内に応答が返されず (ジョブが非同期で実行されていないと思われます)、ロガーはこれを表示しますEnqueued MyJob (Job ID: e3d698eb-00d8-4849-9496-f01c53fc7217) to Inline(default)

非同期ではないコントローラーでインライン(デフォルト?)アダプターを使用しているようです。

ps : pumahttp サーバーとして使用しており、ActiveJob なしで sucker_punch を使用しても問題なく動作します