問題タブ [rufus-scheduler]
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.
ruby - RubyでスケジューラとAMQPを適切に連携させるにはどうすればよいですか?
私がやりたいことは、1 時間ごとにサーバー上の RMQ 交換にメッセージのバッチを発行する定期的なプロセスを開始することです。
RMQProcess
AMQP イベント ループを起動するクラスを と呼びましょう。これを行うには rufus-scheduler を使用できると思いました。
これは機能します...ループを通過するたびに、AMQP チャネルが増加します (2 から 4 から 6 など...)。これは、チャネルが適切に閉じられていないことを意味していると思います。これが問題を引き起こす可能性があります。
私の質問を要約すると、この種のことを行うための適切な (または少なくとも適切な) 方法は何ですか? スケジューラ プロセスに入る前に AMQP プロセスを起動する必要がありますか、それとも正しい方法で実行していますか? AMQP イベント ループ内で独自のスケジューリング ロジックを展開する必要がありますか? もっと良い方法があるに違いないように思えるので、それは私の恐れです。アドバイスをいただければ幸いです。
参考までに、start メソッドは次のとおりです (この場合は、RandomText gem を使用して意味のない文章を公開しているだけです)。
ruby-on-rails-3 - ユニコーン ワーカーが原因で、rufus-scheduler がスケジューラを複数回実行する
Rails3 プロジェクトの /configs/initializers/schedule.rb でスケジューラをセットアップしましたが、正常に動作しましたが、2 回動作し、ユニコーン ワーカーがスケジュールを同時に実行したためだと思うので、データベースに 2 つのレコードを作成します毎回。私は自分のロジックとその問題をチェックし、ローカル マシンに 1 つのレコードを入力しました。
以下を確認しましたが、複数のユニコーンワーカーを停止してスケジューラを実行する方法がわかりませんか?
https://github.com/jmettraux/rufus-scheduler/#advanced-lock-schemes
誰でもこの問題を抱えていますか?アイデアがあれば助けてください。
ありがとう、
P・シャー
ruby-on-rails-3 - Heroku の rufus-scheduler とdelayed_job: なぜワーカー dyno を使用するのですか?
私はRails 3.2.16アプリを開発しており、無料のWeb dynoが1つあり、ワーカーdynoがないHeroku開発アカウントにデプロイしています。(有料) ワーカー dyno が本当に必要かどうかを判断しようとしています。
アプリはさまざまなメールを送信します。私はdelayed_job_active_recordを使用してそれらをキューに入れ、送信します。
また、毎分通知数を確認する必要があります。そのために、rufus-scheduler を使用しています。
rufus-scheduler は、Heroku Web dyno内でバックグラウンド タスク/スレッドを実行できるようです。
一方、delayed_job で見つけたものはすべて、別のワーカー プロセスが必要であることを示しています。なんで?rufus-scheduler が Web dyno 内でデーモンを実行できるのに、delayed_job が同じことを実行できないのはなぜですか?
毎分タスクを実行し、delayed_jobs を処理するために以下をテストしましたが、単一の Heroku Web dyno 内で動作するようです。
config/initializers/rufus-scheduler.rb
これは非常に明白に思えるので、何かが足りないのではないかと思いますか? これは、別のワーカー プロセスの複雑さと費用を追加せずに、delayed_job キューを処理する許容可能な方法ですか?
アップデート
@jmettraux が指摘しているように、Heroku は非アクティブな Web dyno を 1 時間後にアイドル状態にします。まだ設定していませんが、さまざまなキープアライブ方法のいずれかを使用して、スリープ状態にならないようにしていると仮定しましょう: Heroku のアイドリングを防ぐ簡単な方法は? .
ruby-on-rails - Ruby on rails スケジュールされたタスク
タスクをスケジュールするのはこれが初めてで、最適な実装 (または適切な実装) がわかりません。
私の目標: twilio を使用して ruby on rails 4 アプリをセットアップし、Heroku にデプロイしました。カスタマイズされたテキスト メッセージ (データベース内の情報によって書き込まれ、作成される) を使用して、週に 1 回、すべてのユーザーにアプリが自動的にテキスト メッセージを送信するようにしたいと考えています。
調査の結果、私は次の Gem にたどり着きました: WhenとRufus-Scheduler。
これらの宝石は両方ともジョブを完了できると信じていますが、Rufus のドキュメントを読むと、「注意してください: rufus-scheduler は cron の代替品ではありません」私が欲しいものが本当に cron ジョブなのか、それとも「Rufus スケジューラ」。
次の質問が残っています: cron ジョブとは何ですか? また、cron ジョブを使用する適切な時期はいつですか? Rufus-Scheduler が cron の代わりにならないのはなぜですか? また、何が違うのですか? どちらを使用する必要がありますか?
ruby-on-rails-4 - unicorn で複数回実行されている Rufus スケジューラは、:lockfile で修正されましたが、エラー メッセージを削除するにはどうすればよいですか?
環境: Ubuntu、rails 4、rufus、unicorn、nginx
Unicorn には複数のワーカーがあるため、上記の「every」タスクは 60 秒ごとに複数回実行されます。
これに対する答え: rufus scheduler running times each time によると、:lockfile オプションを追加したところ、うまくいきました!
ただし、ログから、「すべての」タスクがまだ呼び出されようとしているようで、多くのエラー メッセージが表示されます。
この問題を解決するにはどうすればよいですか?
前もって感謝します。
ruby-on-rails - Rufus スケジューラのタイムアウト:: Selenium 仕様のエラー
プロジェクトでダッシュ レールhttps://github.com/gottfrois/dashing-railsを使用しています。rails env load で rufus-scheduler ジョブを実行します。
統合テスト (rspec、capybara、selenium-driver) を実行すると、rufus-scheduler のタイムアウト エラーが原因で、一部のテストがランダムに失敗します。テスト環境で rufus-scheduler エラーを黙らせたり、rufus を完全に無効にしたりする方法はありますか? 私は自分のコードベースで rails_env=test を実行するのが好きではないので、他の解決策をいただければ幸いです。
サンプル エラーは次のようになります。
ruby-on-rails - Rails アプリから SMS を送信する
Ruby on Rails を使用して、heroku にデプロイする投薬リマインダー システムを構築しています。
このシステムを使用して、医師は患者の薬の名前、投与量、タイミングの詳細などの薬の詳細を入力すると、アプリは薬を服用する時間をSMSで患者に通知します。
私はアプリケーションを開発しましたが、投薬期間が経過するまでプロセスを何度も実行する必要があるため、SMS の部分で立ち往生しています。
データベースに繰り返しクエリを実行するスクリプトを Rails アプリから実行できるようにしたいのですが、SMS を送信するときに患者にディスパッチします。これは、通常の要求/応答 Web サイクルでは機能しません。
開発者が rufus スケジューラーや resque などのバックグラウンド ジョブを作成できるようにする rubygems を調査しましたが、これを行う方法がわかりません。
私はあらゆる種類の提案を受け入れます。SMSの送信にTwilioを使用しています