2017-05-02 1 views
3

私はDjangoで、ユーザーが実行時に指定した日に何らかのタスクを毎日行うことを可能にするアプリケーションを構築する必要があります。Djangoでタスクを動的にスケジュールする方法は?

セロリを見ましたが、役に立たないものは見つかりませんでした。私はapply_asyncを見つけました。私は特定の時間に一度実行するタスクを得ることができますが、反復は行いません。私は何かを逃しているが、何がわからない。

私はこれをどのように達成できるかお勧めします。

答えて

0

django-crontabはあなたにとって良い解決策だと思います。

+1

おかげで、私がsettings.Pyで時間をハードコーディングする必要がありますようですが、私は、ユーザー入力に基づいて動的に設定する必要があります。

あなたは私のgithubの例を見ることができます。 –

+0

さて、それは最善の解決策ではないかもしれませんが、ユーザータスクがあるかどうかをチェックするcronジョブを毎分実行することができます。 – ikreb

+0

これはおそらくあなたのための '' django-chronograph''(https://bitbucket.org/wnielson/django-chronograph/)の解決策でもあります – ikreb

0

django-celery-beatパッケージには、データベースにタスクを動的に追加してデータベースに定義したとおりに実行できるパッケージがあります(たとえば5分ごとなど)。しかし、現在はバグがあり、そのタスクはセロリキューに追加されませんデータベースに追加されました。 1つの推奨される回避策は、新しいタスクが追加されるたびにセロリプロセスを再起動することです。
Dan Baders scheduleパッケージで解決しました。私は現在の分で実行する必要のあるタスクをデータベースでチェックする毎分のタスクをスケジュールしました。次に、私は新しいスレッドでそれぞれのタスクを開始します。
これが役に立ちます。

+0

おかげさまで、Django-Celery-beatは私が探しているようですが、スケジュールパッケージも有望そうですが、Djangoに統合されたものが必要です。バグが修正されたかどうかを確認します。 –

+0

私はあなたとまったく同じ必要がある間、先週チェックしました。必要に応じて、私のソリューションのコードスニペットをスケジュールパッケージと共有できます。あなたはそれを受け入れられたものとしてマークできますか? – giaco

+0

解決策が私に役立つかどうか確かめてください。 –

1

重いAMQPスタックを使用して防ぐことができます簡単な解決策、Celeryのような外部依存を防止し、あなたができることの一つは、あなたがcustom management commandを書くことができるということです、

python manage.py my_daily_cmd 

Windowsを使用している場合はcronを使用し、 あなたは窓がcronを/に/ schtasks.exeでatまたはschtasks.exe

を使用使用している場合、あなたはあなたのmy_daily_cmdご希望の時間に実行することができます。

+1

私はタスクをスケジュールすることができるようにユーザーが必要です、とにかく感謝します。 –

0

セロリとcronの代替品は、python-rqrq-schedulerです。

+0

ありがとうございましたrq-schedulerは私のユースケースには良いようです。 –

+1

@ KamalSingh私の経験では、それは信頼できるし、セロリを設定するよりも設定と選択肢が少なくて済みます:) – antonagestam

関連する問題