問題タブ [clockwork]
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-on-rails - I18n と時計仕掛け
モデル メソッド「model_method」が時計仕掛けから呼び出されると、I18n.locale は常にデフォルトのロケールと等しくなります。
現在のロケールをモデル メソッドに渡すにはどうすればよいですか?
の一部clockwork.rb
:
の一部book.rb
:
php - Laravelでボトルネックを見つける方法は?
Laravel 5.2 を使用して作成された大規模なアプリケーションがあります。アプリケーションはしばらく「1 日か 2 日」正常に動作しているように見えますが、その後「各リクエスト テーブルが 15 秒以上」遅くなり始めます。
速度低下の原因を突き止めようとしています。手始めに、順番に確認する必要がある「以下」の上位 4 つのカテゴリをリストしました。
- SQL サーバーの問題。ロック、実行時間の長いクエリ。
- 長時間実行されるループのような余分な/不要な作業を引き起こす可能性のある PHP の問題
- メモリ リークや応答時間の遅延などの Web サーバーの問題。
- ネットワークの問題。
最初のカテゴリ「SQL の問題」については、すべてのクエリを評価しましたが、すべてが軽く、かなり速いようです。長時間実行されるクエリはなく、SQL ロックも見つかりません。これを可能性のある問題として排除しませんでしたが、今のところ、他の場所を探すのは公平です. アプリケーションが大量のクエリを生成していることに注意してください。これは、N+1 のケースに遭遇している可能性があることを示唆しています。
カテゴリ 3 と 4 は重要ですが、2 番目のカテゴリである「コードの問題」に焦点を当てたいと思います。コードに問題があるかどうかを判断するために、いくつかのことを理解できる必要があります。ここに私が知りたい/ログを開始したいことがいくつかあります。
- 各クラスの実行にかかる時間。実行に時間がかかるかどうかを確認します。
- N+1 ケースのソースを特定できる各クラスから生成されたすべてのクエリの数/リスト。
Google Chrome で Clockwork 拡張機能を使用しているため、ログの作成に役立ちます。しかし、クラスレベルで結果を分析することはできません。これにより、何が起こっているのかを深く理解できます。
上記の2つのアイテムをどのように集めることができますか? Clockwork にフックして、その情報をフィルターとして追加し、その情報をすべて Google 拡張機能に表示することはできますか?
ruby-on-rails - Clockwork ジョブを手動で実行するにはどうすればよいですか?
タイトルはそれをすべて本当に言います。
Clockwork ジョブを手動で実行することはできますか? たとえば、clock.rb
ファイルがある場合
のようなものを呼び出せるようにしたいと思いClockwork.run('api.sync_shifts')
ます。
時計仕掛けのソースを調べましたが、有用なものは何もありませんでした。明らかに、この例ではShift.sync
メソッドを手動で実行できますが、そうすると、ジョブのステータスを監視するために使用している after_run/before_run コールバックが失われます。
ruby-on-rails - Clockwork で 10 分ごとにジョブを実行する
Clockwork で 10 分ごとにジョブを実行したいのですが、00、10、20、30、40、および 50 分後に 1 時間に 6 回実行したいと考えています。
Clockwork の readmeでは、時間と分の値にワイルドカードを使用できると書かれています。
時と分のワイルドカードがサポートされています。
しかし、試しat: '**:*0'
てみるとエラーが発生しました。
ruby-on-rails - 月の初めに時計仕掛けのタスクをトリガーするには?
毎月初めにタスクを実行したいと思います。例えば:
時計仕掛けを使用してこれを行う方法は?
ruby-on-rails - Rails find_each が機能しない
現在、Rails アプリで時計仕掛けを介して SuckerPunch ジョブをトリガーしています。
ただし、ユーザーの検索時に実行がスタックします。Enumerator
( User.find_each.inspect
) をコンソールに出力すると、ユーザーが表示されます。ブロックが実行されないのはなぜですか? Rails コンテキストが欠落している可能性はありますか?
それは何時間も私を夢中にさせてきました。ところで、Herokuにデプロイしています。
編集: わかりました、エラーがあります: Primary key not included in the custom select clause
.
前もって感謝します!
ruby-on-rails - Heroku でワーカーを毎日実行するようにスケジュールした場合、ワーカーが 2 回実行されたり、スキップされたりしないようにするにはどうすればよいですか?
Heroku が少なくとも 1 日に 1 回は dyno を再起動することを考えると、Clockwork、Sidekiq、および Redis がすべて Heroku にどのように適合するかについて、私は少し混乱しています。
1 日に 1 回実行されるワーカーがあるとします。そのため、次のように構成されconfig/clock.rb
ています。
このワーカーでは、アカウントを作成したが 2 日以内に確認していないすべてのユーザーを取得し、各ユーザーに確認メールを再送信します。
誰かが月曜日にサインアップし、このジョブが水曜日に実行され、彼らを見つけて、2 番目の確認メールを送信するとします。その後、何らかの理由で dyno が再起動され、ジョブが再び実行されます。彼らはさらに別の電子メールを受け取ります。または、ジョブの実行が必要になる直前に再起動が行われた場合、何も得られません。
Heroku dyno での「寿命」を考えると、Clockwork には 24 時間より長いジョブの概念があるのはなぜですか? この種のものをデータベースに常に保存することなく、この制限を簡単に管理する方法はありますか?