2016-12-11 4 views
0

私はそれに新しいですと、私は本当によくエリクサーを理解していない場合は、私を許して...スーパーバイザ

私は動的にcronジョブを作成するにはcronのAPIとしてquantum-elixirを使用しています。誰かがルートにPOSTSしたら、私はEcto Repoにcronジョブの詳細を保存し、同時にQuantum.add_jobで量子ジョブを作成します。

私はサーバを閉じて再起動すると、再起動しても生き残れないため、すべてのcronジョブを再追加する必要があります。だから、もし私のアプリケーションがクラッシュすると、私はすべてのクーロンの仕事を失うことになると思った。 (私はGoogleコンピューティングエンジンでアプリケーションをホストするシナリオについて考えていますが、計算機インスタンスのリセット、つまりボックスのアップグレードなど、理由を問わず)

これらのcronジョブを保持している間、私のアプリを再起動する適切な方法はありますか?私のアプリケーションモジュールのstart機能で

worker(Task,[MyApp.RebootTask, :reboot, []], restart: :transient)

は今の私は、次があります。

これは正しいアプローチですか?他に考慮すべき点は何ですか?より一般的なアプローチは、あなたのconfig.exsに(そうでない場合は名前付きまたは)あなたのcronジョブを定義することですので、任意の指導を大幅に

答えて

0

それは、量子のようには見えませんが評価されて

は、動的に追加されたcronジョブを持続します。

あなたは既にEctoでジョブの詳細を保存しているので、アプリケーションの起動時にその詳細を読み、読み込むだけです。あなたは既にQuantumを使用しているので、config/config.exsで次のようにしてください。

config :quantum, cron: [ 
    "@reboot": &MyApp.some_function_to_read_and_readd_my_cronjobs/0 
]