問題タブ [hangfire]
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.
asp.net - Azure 共有ホスティングで Hangfire を開始 (「常時」) するにはどうすればよいですか?
Hangfireを使用してスケジュールされたタスクを実行する単純な共有ホスト ASP.NET MVC サイトを (無料のサイト オプションを使用して) Azure にデプロイしたいと考えています。
問題は、サイトが最初のリクエストでしか開始されないため、Hangfire はそれまでタスクのスケジューリングを開始しないことです。IIS または専用 VM を使用すると、「常時オン」オプションを設定して、サイトをプレウォームできます。ただし、これは共有ホスティングでは不可能です。
これについて何ができますか?「A0」と呼ばれる最小の VM に料金を支払い、そこに ping スクリプトを配置して、サイトが常に稼働していることを確認することを考えました。それは機能しますが、やり過ぎのようです。
他に良いオプションはありますか?
sql - Hangfire マージ コマンド エラー
datetime2 データ型を持たない SQL Server 2005 で Hangfire を実行しようとしているので、このディスカッションは非常に役に立ちました。これで 1 つの問題は解決しましたが、別の問題が発生しました。今、私はエラーが発生します:
SqlMapper.cs が見つかりません。タイプ 'System.Data.SqlClient.SqlException' の例外が System.Data.dll で発生しましたが、ユーザー コードでは処理されませんでした。「merge」付近の構文が正しくありません。
GitHub で SqlMapper.cs のソース コードを見つけました。Dapper.1.38 パッケージは、プロジェクトに追加したパッケージです。それでも、モジュールをビルドしたときとはソースファイルが違うというメッセージが表示されます。
とにかくデバッグを行い、例外の原因となっている SQL コマンドを見つけることができました。これです:
マージ コマンドの構文は SQL Server 2005 と互換性がない可能性がありますが、例外の理由を特定できませんでした。VALUES 句が疑われます。どんな助けでも大歓迎です。
c# - Hangfire ジョブがキューでスタックし、ローカル IIS に展開されたときに処理されない
ここで奇妙な問題が発生しています。
シンプルな MVC5 アプリケーション + Hangfire 1.2.0 があります。
IIS Express でアプリを実行していたとき、キューに入れられたジョブは、キューに入れられた後に正常に処理されました。
しかし、ローカル IIS に切り替えると、キューに入れられたジョブが処理 (実行) されず、キューにスタックしたままになります。バックグラウンド サーバーがジョブをまったく起動していないようです。
Windows 7 と IIS 7.5 を使用しています。
重要な構成がありませんか?
asp.net - Hangfire のシャットダウンがプロセスの強制終了を待機していない
チュートリアルで提供されているように、OWIN を使用して、Hangfire を Web アプリの一部として実行するように構成しました。
提供する API を介して、実行時間の長いバックグラウンド プロセスをキューに入れます。実行するジョブは、.Net Process クラスを使用してバックグラウンドで R プロセスを初期化します。R コードは、ジョブをより速く完了するために、内部的に多数のプロセスを生成します。ジョブが実行されると、タスク マネージャーで多数の Rscript プロセスが実行されます。
Web アプリのアプリ プールを手動でリサイクルすると (プロセスの再起動がどのように機能するかを確認するため)、Rscript プロセスは強制終了されません。コード内のすべての Rscript プロセスを取り除くためのカスタムの kill 戦略があります。
kill メソッド内で、Process.WaitForExit() メソッドを使用してブロックします。
手動リサイクルを行うと、すべてのプロセスが強制終了されません。プロセスの強制終了をブロックする代わりに、現在のスレッドは、いくつかの Rscript プロセスを強制終了した後に終了します。
hangfire コードはトークンをキャンセルするだけのようで、キャンセル トークンをリッスンしているプロセスが強制終了されるのを待っているようには見えません。誰かがこれを機能させる方法を提案できますか? 詳細が必要な場合はお知らせください。
c# - Hangfire.io で NLog にログインする
現在、ハングファイアを使用して、Windows サービスでいくつかのジョブを実行しています。ジョブは WebAPI から起動されます。
現在、すべてのジョブが成功するとシステムは正常に動作していますが、例外が発生したときにログが記録されません。カスタム ロガーを使用して Hangfire からメッセージを受信した経験のある人はいますか?
私のロガーは基本的な NLog インターフェイスです:
Windows サービスで Hangfire ジョブ サーバーを次のように構成しています。
hangfire のドキュメントに基づいて、必要な参照を追加し、ジョブ サーバーのセットアップ後に以下を追加して、それに従ってみましたが、まだログは生成されませんでした。
throw new Exception()
ジョブによって呼び出されるメソッドで例外をシミュレートしているだけです。ジョブは webApi 呼び出しで次のように作成されます。
私が探しているのは、Hangfire で使用するためにロギングを適切に構成した経験があるかどうかです。
c# - これは、バックグラウンド ワーカーから asp.net webapi 2 エンドポイントをヒットする最もクリーンな方法ですか?
概要:
Hangfireを使用して、毎晩期限切れのウィジェットをチェックするなど、設定された間隔で実行中のバックグラウンド ジョブを処理しています。実行中のジョブから ASP.NET Web Api 2 エンドポイント (おそらく GET と POST) にヒットする最良の方法を知りたいです。
もののバージョン(これが重要な場合)
- .NET 4.5 MVC 5
- Web API 2(.1?)
- ホスティング サイト Windows azure
- 8 GB の RAM脚注 (1) を参照
- IISエクスプレスを使用したローカル開発者(またはVS2013に組み込まれているものは何でも)
私の具体的な質問
- この実装は、バックグラウンド タスクのようなものから API への接続を開閉する適切な方法ですか?
- 以下のコードで、client.BaseAddress 文字列 ( http://whatever.xxx ) を動的に取得するにはどうすればよいですか? 2 番目の疑似コード スニペットにあるようなことができれば、非常に便利です。
このブログ投稿から取得したコードは次のとおりです
これはすでにかなりきれいだと思いますが、私は HttpClient クラスの使用にひどく慣れておらず、ほとんどの API インタラクションは JavaScript からのものです。
HttpClient.BaseAddress 文字列を取得するためにやりたいこと
ルートの else ブランチの場合、それは大したことではなく、これらの文字列は多かれ少なかれ一定です。ローカルで実行しているときは、localhost:AnyPort であるか、IIS Express の他のバリエーションであるかに関係なく、動作させたいと考えています。
1: Just kidding about the RAM, just wanted to see if I could make the read whisper 'wtf' out loud. Please advise if successful
asp.net-mvc-5 - プロジェクトを公開した後、Hangfire が機能しなくなりました
ASP.NET MVC 5 を使用しています。.NET Framework のバージョンは 4.5 です。プロジェクトを公開した後、Hangfire が機能しなくなりました。そのため、定期的なタスクが機能しません。www.{myurl}/Hangfire と入力すると、空白のサイトが表示されます。接続文字列はエラーをスローしません。
では、どこに問題があるのでしょうか。プロジェクトを localhost で実行すると、正常に動作します。localhost と公開バージョンのプロジェクトで同じデータベースを使用しています。