2017-07-13 12 views
0

私はデジタル海洋のubuntu 14.04サーバーにdjangoアプリケーションをデプロイしようとしています。Django Celery ubuntu 14.04

セロリは非同期タスク用であることを理解しています。ユーザーは何かを行い、高価なタスクが実行されるのを待つのではなく、サイトの別のセクションに行くことができます。 Celeryは、redisや他のメッセージブローカーを使用してこれを行います。キューを作成し、ワーカーはキュー上のタスクを実行します。私はこれを使用して、ユーザーエクスペリエンスに対する侵害の少ない呼び出しを行うようにしています。

私はこれをプロダクションに展開するので、セロリのすべてのものがどこにあるのか非常に混乱しています。私は、私が管理ページからセロリで必要なものすべてを行うことができると言う投稿を見てきました。そして、他の投稿には、セロリを始める監督ファイルがあります。スーパーバイザファイルを作成しようとすると、 '/ home/django/django_project/venv/bin/celery'にエラーコマンドが表示されますが実行できません。

管理ページからセロリを管理することについては、セロリの作業者とキューがどのように作成され、管理されているかわかりません。私はそこを通って仕事を予定したいが、一般的には非常に混乱している。

私はこれをクリアする人に感謝します。 ありがとうございます

更新:セロリビートは私が一緒に行おうとしたものです。私が実行した場合:

celery -A <proj> beat -l info -S django 

これが起こる:超クールだ

[2017-07-13 22:31:51,051: INFO/MainProcess] beat: Starting... 
[2017-07-13 22:31:51,052: INFO/MainProcess] Writing entries... 
[2017-07-13 22:31:51,107: INFO/MainProcess] Scheduler: Sending due task does it work!? (does_celery_work) 
[2017-07-13 22:31:51,134: INFO/MainProcess] Writing entries... 
[2017-07-13 22:32:21,094: INFO/MainProcess] Scheduler: Sending due task does it work!? (does_celery_work) 
[2017-07-13 22:32:51,095: INFO/MainProcess] Scheduler: Sending due task does it work!? (does_celery_work) 

を!しかし、タスクは実行されていません。セロリのスケジュールされたタスクが働いていることを証明するために30秒ごとにテキストを電話するtwilioタスクです。 pingを実行するとredisサーバが正常に動作しています。また、正しいポートにあり、そのポートにpingされていることを二重にチェックしました。 セロリのビートを自動的に働かせて、それが機能することを確認することになるでしょうか?

答えて

0

あなたはhttp://flower.readthedocs.io/en/latest/を試しましたか?作業者が正しくセットアップされているかどうか、またタスクを確認するのに役立ちます。

私はDjangoのセロリのRedisのhttps://gitlab.com/harveydf-tutorials/django-celery-realtime

の良い例を発見したが、これらはあなたを助け願っています。

+0

ありがとう!花はとても助かりました。しかし、いくつかのタスクが失敗する場合があります。 [W:170713 22:59:25 control:44] 'stats'検査メソッドが失敗しました [W:170713 22:59:25 control:44] 'active_queues'検査メソッドが失敗しました [W 170713 22:59:25 control:44] 'registered'検査メソッドが失敗しました [W 170713 22:59:25 control:44] 'scheduled'検査メソッドが失敗しました [W 170713 22:59:25 control:44] 'active '検査メソッドが失敗しました [W 170713 22:59:25 control:44]'予約済み '検査メソッドが失敗しました – Davep

+0

申し訳ありませんが、コメントの書式設定方法がわかりません。これはredis localhostに正常に接続し、それ以降のすべてが失敗し、ポート5555にタスクは表示されませんが、花のページが読み込まれます! – Davep

+0

私の問題は、花と一緒に上記のようにセロリのビートを始める方法がわからないことだと思います。私はスーパーバイザーファイルを使用する必要があると思うが、決してそれを動作させることはできない。 – Davep

0

誰もがここに将来的にこのポスト時につまずく場合は、私はDjangoの管理者から実行するようにセロリの設定方法です:

は、コマンドのスーパーバイザー/ conf.d/celery.conf でsupervisord confファイルを作成します私はちょうど私のvirtualenvのセロリバイナリへの道ではなく、セロリを入れました。私はなぜそれが動作するのかわかりませんが、それはありません。

私はビートと花のために同じことを行います。

[program:celery] 
command=celery -A proj worker --loglevel=INFO 
directory=/home/django/django_project 
user=root 
numprocs=1 
stdout_logfile=/home/django/django_project/logs/celery-worker.log 
stderr_logfile=/home/django/django_project/logs/celery-worker.log 
autostart=true 
autorestart=true 
startsecs=10 

; Need to wait for currently executing tasks to finish at shutdown. 
; Increase this if you have very long running tasks. 
stopwaitsecs=600 

; When resorting to send SIGKILL to the program to terminate it 
; send SIGKILL to its whole process group instead, 
; taking care of its children as well. 
killasgroup=true 


; if rabbitmq is supervised, set its priority higher 
; so it starts first 
priority=998