django-crontabタイミング実行タスクメソッド

2100 ワード

需要
毎日1通のメールを要求し、そのメールを読み取ります.
これはlinuxがcrontabを持参して実現できるが、結局django開発である.djangoから実現する方法があるかどうかは分からないと思います.
簡単に検索してみると、この方面の方法は確かに少なくありません.
celeryプラグインの学習曲線が大きいのを見たので,この小さなニーズはdjango-crontabを用いて解決した.
取付pip install django-crontabapp名をsettingsに追加する.py中
INSTALLED_APPS = (
        'django_crontab',
        ...
    )

ここまではほとんど問題ありません.次に作成するタイミングタスクは、カスタムmangeを実行する2つに分けることができる.pyのコマンドで、もう1つはカスタム関数を実行します.
私が選択した方法は、関数をカスタマイズすることです.
まず元のapp(view.pyと同級)にcronを新規作成します.py(名前は任意で、view.pyに置くこともできます.新しいファイルは管理しやすいです.)
def test():
    print 123
    #         

settings.pyでの最後の増加
CRONJOBS = [
    ('*/5 * * * *', 'appname.cron.test','>>/home/test.log')
]

複数のタイミングタスクがある場合は、CORJOBSに入れればいいのですが、「/5***」はcrontab構文に従っています.
‘appname.cron.test'、このappnameはあなたが開発したときにsettingsに参加したものです.君のせいだpyファイルはこの下にあります.そうしないと、パスが見つかりません.cronはあなたが自分で作ったタスクファイルの名前です.testは実行する関数の内容です.
‘>>/home/test.log’は、通常、1つのファイルに情報を出力します.この方法では、「>>」は追加書き込みを表し、「>>」は上書き書き込みを表します.
開始
以上が完了したら、python manage.py crontab addを実行してタスクを追加して有効にする必要があります.
現在のタイミングタスクpython manage.py crontab showを表示
すべてのタイミングタスクpython manage.py crontab removeを削除
djangoサービスを再起動します.corntab -eを実行すると、システムでこのタイミングタスクが作成されていることがわかるはずです.結局、django-crontabプラグインのlinux最下位への呼び出しだけで、この方法がwindowsで有効かどうかは不明です.
多くの試みをしてgithubのドキュメントを見てみると、理解に役立ちます.
各種の経路は必ず正確であることを確保しなければならない.そうしないと、誤りを調べるのは難しい.
紹介は個人的な理解に基づいて、うっかり漏れがちなので、皆さんに役に立つといいですね.
リファレンスリンク
github : https://github.com/kraiz/django-crontab