4

次のコマンドを使用して、スケジュールに従って solr インデックスを更新する必要があります。

(env)$ ./manage.py update_index

Celery docs を調べて、スケジューリングに関する情報を見つけましたが、スケジュールおよび virtualenv 内で django 管理コマンドを実行する方法を見つけることができませんでした。これは通常のcronで実行した方がよいでしょうか? もしそうなら、どのようにvirtualenv内で実行しますか? 誰でもこれを経験したことがありますか?

助けてくれてありがとう!

4

3 に答える 3

1

コマンドを cron ジョブから定期的に実行するには、virtualenv をロードする bash スクリプトでコマンドをラップするだけです。たとえば、manage.py コマンドを実行するために行うことは次のとおりです。

django_cmd.sh:

#!/bin/bash

cd /var/www/website/
source venv/bin/activate
/var/www/website/manage.py $1 --settings=$2

クロンタブ:

MAILTO=webmaster@website.com
SETTINGSMODULE=website.settings_prod
5 * * * * /var/www/website/django_cmd.sh update_index $SETTINGSMODULE >> /dev/null
0 10 * * * /var/www/website/django_cmd.sh update_accounts $SETTINGSMODULE 
于 2013-07-16T22:42:14.253 に答える
-1

私は実際に生地とセロリを使用してこれを行う良い方法を見つけ、現在取り組んでいます:

app/tasks.py で、必要な manage.py コマンドを使用してファブリック関数を作成し、それを で装飾し@periodic_task、セロリのスケジュールに追加すると、準備が整います。

更新: モジュールでファブリックを使用すると、ファブリック ファイルとして認識され、ファイル内のセロリ呼び出しが機能しなかったため、実際にファブリック + セロリを使用できませんでした。

于 2013-07-17T15:48:04.063 に答える