数秒ごとにコードを実行する方法を見つけようとしている ruby on rails アプリがあります。
cron または cron のような実装を使用して多くの情報とアイデアを見つけましたが、これらは分単位まで正確であり、外部ツールが必要です。タスクを 15 秒ごとに開始し、アプリケーション内で完全に自己完結させたい (アプリが停止した場合、タスクが停止し、外部セットアップがない場合)。
これは、キャッシュ データのバックグラウンド生成に使用されています。数秒ごとに、タスクはいくつかのデータを収集し、すべてのクライアント リクエストで使用されるキャッシュに保存します。このタスクは非常に遅いため、クライアントの要求をブロックせずにバックグラウンドで実行する必要があります。
私はRubyにはかなり慣れていませんが、強力なperlのバックグラウンドを持っています。これを解決する方法は、フォークしてコードを実行し、完了したら終了するインターバルタイマーとハンドラーを作成することです。
クライアントのリクエストをシミュレートして、Rails コントローラー自体を fork にする方が良いかもしれません。このようにして、タスクの URI をヒットすることでタスクを開始できます (ただし、タスクは数秒ごとに実行されるため、必要になるとは思えませんが、将来使用される可能性があります)。ただし、定期的なタスクスケジューラによって呼び出されているメソッドをコントローラーに呼び出すだけでも簡単です(一度取得したら)。