2017-08-04 6 views
0

私はDjangoで予定されている仕事の実例をインターネットで取り上げました。しかし、私はそれを行う方法しか見つけることができませんが、例は示されていません。誰かがdjangoフレームワークの動作例をcronで分かりやすいタスクを実行して共有できますか?例Cron with Django

+0

どのような例が必要ですか?あなたはすでに管理コマンドの作成に関する完全な指示を持っており、cron自体は十分に文書化されています。どこに問題がありますか? –

+0

@DanielRoseman djangoのドキュメントではカスタムコマンドを作成する方法が述べられていますが、必要なのは、 "python manage.py runserver"を呼び出すときにスケジュールされたタスクを実行させることです。私が投稿した他の2つのモジュールでも、私は対応する公式サイトでその指示に従いましたが、それほどうまく動作しません。 –

+0

あなたの言っていることを理解できません。スケジューリングとrunserverの間のリンクは何ですか? (runserverは開発用であるという事実を完全に除けば)また、何かを試してもエラーが出たら、それらを投稿するべきです。 –

答えて

0

まずようにcronジョブでこのスクリプトを呼び出すことができcustom admin commandを作成する必要があります。このコマンドは、タスクをcrontabに追加するために使用されます。

cron.pyその後

from django.core.management.base import BaseCommand, CommandError 
import os 
from crontab import CronTab 

class Command(BaseCommand): 
    help = 'Cron testing' 

    def add_arguments(self, parser): 
     pass 

    def handle(self, *args, **options): 
     #init cron 
     cron = CronTab(user='your_username') 

     #add new cron job 
     job = cron.new(command='python <path_to>/example.py >>/tmp/out.txt 2>&1') 

     #job settings 
     job.minute.every(1) 

     cron.write() 

、あなたは以下のコードを見ている場合、Pythonスクリプトは、1分ごとに起動しようとしている。ここに私のカスタムコマンドの一例です。 example.pyファイルを作成し、1分ごとに作成する機能を追加します。

crontab -l 

python manage.py cron 

は、cronジョブが正常に追加され、次のコマンドを実行していることを確認するには:

すべてがちょうどプロジェクトのDjangoのディレクトリから次のコマンドを起動し、スケジュールされたジョブを追加する用意があります

* * * * * <path_to>/example.py 

デバッグTに:

あなたはこのように表示されます彼はexample.pyと呼んでこのコアを呼び出します:

tail -f /tmp/out.txt 
0

celeryによってスケジュールされたタスクを実行できます。

セロリは、リアルタイム処理に重点を置いたタスクキューであり、タスクスケジューリングもサポートしています。

0

djangoアプリケーションの何かを使用するpythonスクリプトの先頭に、次のコードブロックを追加してください。

import sys, os, django 
# append root folder of django project 
# could be solved with a relative path like os.path.abspath(os.path.join(os.path.dirname(__file__), '..') which corresponds to the parent folder of the actual file. 
sys.path.append('/path/to/django-project/') 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
django.setup() 

その後、あなたはすべての

* * * * * user /path/to/python /path/to/script