2017-08-03 13 views
0

「Djangoでの定期的なタスクの作成方法」については、this postのように質問しています。しかし、私はそのポスト(Celerityやcronを中心に)で言及されたオプションからJavascript/jQueryの定期的なタスクを使用することをお勧めします。定期タスクDjango:Celerity vs Javascript/jQuery

私が達成したいのは、毎日特定の時間にタスクを実行することです。 "view.py"から関数を呼び出す。この関数はURLに接続し、ファイルをダウンロードし、そのファイル内で情報を検索してデータベースに格納します。その後、新しい情報でホームページをリフレッシュしてください。

どれが賛否両論ですか?

+0

状況を正確に説明し、どこに適用する必要がありますか。両方のアプローチは異なる状況に適しています –

+0

ああ、申し訳ありません、私は自分の質問を編集していません –

+0

@ArpitSolanki完了、ごめんなさい –

答えて

0

私は、クライアント側のJavaScript(ここで任意の助けになることができるか確認するために失敗し、それが実行している場合サーバーサイドでなぜJavaScriptを使うのですか?)

あなたのプロジェクトでセロリの他の用途がある場合は、それを使用してスケジュールされたタスクを実行することは意味があり、「プロ」は手動のcrontabセットアップを必要としないことです展開時に

セロリスタック全体(セロリ+ rabbitmq + redis)は、単純なcronジョブ(または、スケジューラが存在するもの)と比較してちょっと残忍かもしれません。あなたのシステム)。

また、実行するタスクがHTTP要求/応答サイクルに関連していない場合は、ビューには何もしません。デフォルトではdjango-admin startappviews.pymodels.pyurls.pyのモジュールを含むパッケージスタブを作成しますが、任意の他の任意のモジュールを必要に応じて追加できます。コマンドラインから実行されるスクリプト(cronジョブの場合)の場合、慣用的な解決策は、それらをcustom management commandsと書くことです。

1

定期的なタスクをjavascriptで実行することは、フロントエンド側でビューを呼び出してタスクを実行する必要があるため、確かにオプションではありません。

私は、定期的なタスクを実行するためにはCeleryを使用することをお勧めします。これは設定が簡単で、あなたの場合はタスクを実行するコードがほんの数行必要です。

from celery.task.schedules import crontab 
from celery.decorators import periodic_task 

@periodic_task(run_every=crontab(minute=0, hour=0) ) 
def every_monday_morning(): 
    print("Execute every day at midnight") 

参考文献:以下

は、定期的なタスクを実行する方法の一例である docs

+0

早急に対応していただきありがとうございます。 djangoプロジェクトの別のpythonスクリプト(view.py、urls.py、models.py)から、このコードを追加する必要があるのは "views.py"ですが、わかりません。もしあなたが確認してください。 –

+0

あなたが参照している "Refs"が古いバージョンで、更新されたものが[次の](http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html) 、 私が間違っている? –

+0

あなたのリンクは正しいです。古いリンクに対する謝罪毎日実行したいコードは、上記の関数に追加してからセルリーワーカーを起動するだけです。 –