2017-05-24 19 views
0

私はHangfireを使用しています。私はRecurringJobsのさまざまなシナリオを記述したいと思います。しかし、私は探しているものを達成することができません.CRONがすでに制限されている場合、Hangfireが使用するCRONはまだまだです。Hangfire Cronの式が無効です

私はHangfireのドキュメントを読んでいましたが、より複雑な表現についてはhttps://en.wikipedia.org/wiki/Cron#CRON_expressionのように見え、次にHangfireではデフォルトでサポートされています。しかし、それらは互換性がありません。たとえば、Hangfireには分、時間、月、日、曜日がありますが、Lまたは?それはドキュメント上で言うように、それは動作しません。私は、インスタンス31に選択した場合はどうなりますかMonthly(int day);:Hangfireから

InnerException = {"'L' is not a valid [Day] crontab field value. It must be a numeric value between 1 and 31 (all inclusive)."} 

CRONは、次のような方法があります。私はこの表現16 14 L ? ?のために、このエラー、次のエラーがありますか?たとえば、毎月の最終日に2月や4月などの月に実行されますか?あるいは、私はそれを達成するために何か特別なことをする必要がありますか?

このように何が起こっていますか?私は月の最終日にバックグラウンドジョブを常に実行するために、ユーザーが選択した日の条件を31と定義できないようです。そして私は特別な原因である29日または30日についても話していないし、バックグラウンドジョブを処理するために月の最後の日を常に使用するだろう。

私はHangfire.CRONのMonthメソッドを使っていますが、私は29,30,31日を私が望むように扱うとは思いません。

Hangfire Cronはドキュメントで参照されているCron式を使用していないことを確認していますか、探しているものを達成する方法があれば確認してください。また、お勧めのチュートリアルや何かを教えてもらえますか?私はハンファイヤーが使っているものだと思うのはhttps://github.com/atifaziz/NCrontabですが、それほど助けにはなりません。

答えて

0

あなたは右ですNCrontabです。 Hangfireがそれを使用するので、cron式がこのライブラリでサポートされていることを確認する必要があります。それを行うには2つの簡単なオプション:

  • C#インタラクティブウィンドウ(NCrontab Readmeファイルで説明したように、またはあなたがthis例を使用することができます)
  • オンラインのcronビジュアライザ(のようなhttps://crontab.guruまたはhttp://cron.schlitt.info

Cron.Monthly(31)されます0 0 31 * *に翻訳され、現在の月が31日の場合にのみジョブがトリガーされます。

は、月の最後の日に、常にバックグラウンドジョブを実行する3つの別々のジョブを追加するには、次の

0 0 30 4,6,9,11  * 
0 0 31 1,3,5,7,8,10,12 * 
0 0 28 2    * 

Cron job to run on the last day of the month

関連する問題