タスク:Async
方法でアイテムを削除する [宿題]
Rails アプリケーションで既に構成Active jobs
しましたが、Rails プロジェクトでタスクをdelayed_jobs
実行することについてまだ混乱しています。Async
例を見てみましょう。データベースから削除するアイテムがありますが、それを適切に行いたいと考えていAsync
ます。また、ブログでperform_later
orperform_now
メソッドについて読んでいます。delayed_job
正常に動作している私のコードは次のとおりです。
コントローラ クラス
def destroy
PostJob.perform_now(params[:id])
respond_to do |format|
format.xml { head :ok }
format.js { render 'posts.js.erb' }
end
end
ジョブクラス
class PostJob < ActiveJob::Base
queue_as :default
def perform(id)
@post = Post.find(id)
@post.destroy
end
end
delayed_jobs の公式ドキュメントによるとhandle_asynchronously
、メソッドの最後に追加して実行することができasync
ます。この場合、どのように実装できますか?
私の質問:
- メソッドを見ていると、途中
destroy
で要素を削除していませんAsync
。destroy
ただし、メソッドに記述されているすべての手順はSynchronous
. 私が間違っている? - そうでない場合、非同期で
destroy
削除するメソッドを実装するにはどうすればよいですか?post
- バックグラウンド タスクと cron ジョブは同じものですか?
編集 -1
A Fader Darkly から提案を受けた後、プロセスに対して完全に機能するものに変更perform_now
しましたが、テーブルからエントリを削除していません (ユーザーのときに機能するため、コードは問題ありません)。perform_later
Async
perform_now
また、次のコマンドで手動でジョブを実行している場合、すべて正常に動作します:
rake jobs:work
新しいデータを取得delay_job
したらすぐにタスクを実行する方法はありますか?queue