2

Django プロジェクトで Celery を使用しようとしています。そしていつものように、私は何かをグーグルで検索し、同じものに関するいくつかのSOFの質問、いくつかのブログ、そしてもちろん公式ドキュメントを読みました.

しかし、djangoでセロリをサービスとして実行するとなると、非常に混乱します。これのソースは見つかりませんでした。

1 つのアプリを使用した単純な django プロジェクト。この App フォルダーには、tasks.py すべてのタスクが格納されているファイルがあります (今のところ、単一のタスクです)。

タスク.py

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

@periodic_task(run_every=crontab(minute="*/45"))
def mytask():
    #some stuff to do
    ...
    # return a value

これらは私の設定構成です

設定.py

from __future__ import absolute_import
import djcelery

djcelery.setup_loader()

BROKER_URL = "amqp://user:user@localhost:5672/vhost"
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_BEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

'djcelery'INSTALLED_APS に追加されました

今、Celery ワーカーを実行したい場合は、screen/tmux でこのコマンドを使用する必要があります

python manage.py celeryd --verbosity=2 --loglevel=DEBUG -B

また

python manage.py celeryd --verbosity=2 --loglevel=DEBUG &

nginx、uwsgi、mysqlなどを実行するようなサービスとして実行できるかどうかを知りたいです。デーモンモードで実行したくありません。これどうやってするの?

主にこれをやりたいだけsudo service celery restart/reload/stop/startです

PS: 私が言ったように、私は SOF スレッドをほとんど読んだことがなく、それらの多くは使用しないでくださいと言っていますcrontab。じゃあ何を使えばいいの?これはセキュリティ上の問題ですか?

4

1 に答える 1

0

これをサービスとして実行可能にする方法の例を提供するhttp://celery.readthedocs.org/en/latest/tutorials/daemonizing.html のドキュメントを読むことをお勧めします (複数の異なるスタイルのサービス用)。service blah start を実行すると、init.d/blah に移動してそのスクリプトが実行されることに注意してください。通常、実際にはアプリをデーモンとして実行します (デーモン モードで実行したくない理由がある場合は自由に編集してください)。また、init.d を使用している場合 (たとえば、centos 6 などで、centos 7 は systemd IIRC に移動)、chkconfig を使用して、再起動時に開始するようにセロリ サービスを構成することもできます。

于 2014-08-12T14:04:13.410 に答える