業務で遅延処理が必要だったので、Rubyで下記のような感じで実装しました。
- 遅延処理の情報(実行メソッド、実行予定時刻、パラメータ)をDBのワーカーテーブルに書き込む
- ワーカースレッドがワーカーテーブルを定期的に読み込んで処理を実行する
業務が終わって調べたんですが、それっぽいgemが当然のようにありました(震え声)
github.com
qiita.com
delayed_job自体は非同期処理をするためのgemっぽいんだけど、
:run_atを指定することで、その時間に処理を発火させることができるみたい(未検証)。
また車輪の再発明をしてしまったらしい……。