2016-09-18 11 views
0

私は自作のdjangoアプリケーションでローカルではなくリモートで作業する自動化タスクを持っています。私はチュートリアルを見ていて、その男は私の労働者を止めると言った。私がそれをする前に、私はアプリケーションをメンテナンスモードに入れましたが、それはうまくいきませんでした。その後、私は動作しませんでした私のdjceleryタスクはローカルで実行されますが、リモートでは実行されませんか?

heroku ps:restart 

を走った、そして私は

Warning: The dynos in your dyno formation will be automatically restarted. 

をoutputed

heroku ps:stop worker 

を走った後、私は

heroku ps:scale worker=1 

、まだ何も実行しました。私はこれを読んでいる人に、ローカルで働いていることを思い出させる。私は何が欠けていますか?

私procfile

web: gunicorn gettingstarted.wsgi --log-file - 
worker: celery worker -A blog -l info. 

私が見ている研究しながらprocfileにビートを追加するので言及しています。実際には2つの言及がありますが、これは私が見たチュートリアルで議論されていませんでした。私は設定でscedulerを構成しない定期的なタスクを設定するdjcelery GUIを使用しています私はsettings.pyファイル

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' 

にこれを追加し、念のために、それは違いを作るときセロリビートを述べただけです私が大部分の例で見るように.py。

私のビューでタスクを実行し、それを呼び出すと動作します。私はドキュメントを読んで、私はそれが今、この

celery -A proj worker -B -l info 

後のように見える

-B 

procfile私の労働者に追加する必要がありましたが実現djcelery

答えて

0

を使用して、それを設定している場合しかし、それは文句を言わない実行します私はこの

その後、
heroku ps:scale worker=0 

0をした変更を行いました
git add . 
git commit -am 'added -B' 
git push heroku master 

その後、I

heroku ps:scale worker=1 

その後、私はHerokuの

heroku logs -t -p worker 

からの出力を見ると、私の管理者にスケジュールを作成し、それが働いたことができるように。私はコンソールで出力を見た。お役に立てれば。それはそれはわからない理由が、あなたが知っているか-Bオプションを使用して、あなたはドキュメントで読んだとおり、私は

0

を教えて見つける場合は、生産使用は推奨されていない、あなたの生産のためお奨めていないと言う注意他のプロセスとしてcelery-beatをよく実行してください。

だから、のように、サーバーで実行するのがベストプラクティスです:

celery beat -A messaging_router --loglevel=INFO 

そして、あなたが実行しているプロセスを維持するためにsupervisorを使用している場合、あなたが設定ファイルに次のようなものを追加したいです。

[program:api_beat] 
command=/path/to/v_envs/v_env/bin/celery -A project beat --loglevel=info 
autostart=true 
autorestart=true 
user=your_user (echo $USER) 
directory=/path/to/project/root 
stdout_logfile=/var/log/supervisor/beat.log 
stderr_logfile=/var/log/supervisor/beat.log 
redirect_stderr=true 
environment=EVN_VAR1="whatever", 

あなたは1つのワーカー以上実行することはありません場合は、この理由は、ドキュメントが

を言うようにあなたはまた、労働者-Bオプションを有効にすることで、作業者の内側に埋め込みビートを開始することができ、これは便利ですノードではありませんが、一般的には使用されていないため、プロダクションでの使用はお勧めしません。

作業員が1人を超えると、メンテナンス中に、で動くそれは間違いなく負担になるかもしれません。

関連する問題