Supervisor起動cell y 4.3実戦
3932 ワード
pip install celery celery
djangoプロジェクトでは、エクセルを使ってタイミングタスクsettings.pyを行います.from celery import platforms
from celery.schedules import crontab
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/0' # Broker , Redis
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1' # BACKEND , redis
CELERYD_MAX_TASKS_PER_CHILD = 10 # worker ,
CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml'] #
CELERY_RESULT_SERIALIZER = 'json' #
# root celery
platforms.C_FORCE_ROOT = True
CELERY_BEAT_SCHEDULE = {
'logpolar': { # ( )
# 'task': 'Integration.tasks.lives', #
'task':"Integration.tasks.logpolar",
'schedule': datetime.timedelta(seconds=10), #
# 'schedule': crontab(hour=0, minute=1),
# "args": (4,9), #
},
'RunTotalVisit': {
'task': 'Integration.tasks.RunTotalVisit',
'schedule': datetime.timedelta(seconds=10), #
# 'schedule': crontab(hour=0, minute=10),
}
}
プロジェクトディレクトリの名前が同じフォルダのinit(つまりsettingと同じディレクトリの下)from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ('celery_app',)
エクセルy.py(つまりsettingと同じディレクトリで)from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chinare_data_center.settings') # django
app = Celery('chinare_data_center')#chinare_data_center
app.config_from_object('django.conf:settings', namespace='CELERY') # CELERY_ , settings
app.autodiscover_tasks() # app task.py
tasky.pyはあるアプリの中でtasky.py(この名前は固定されています)from celery import shared_task
@shared_task
def lives(a,b):
c = a + b
return "celery4.3" + c
次にプロジェクトを起動し、端末を開いてプロジェクトディレクトリに入り、以下のコマンドを実行します.celery -A worker -l info
celery -A beat -l info
,
supervisorでcereryを起動して、cerryバックグランドをsupervisorのインストールと配置を実行させることができます.pip install supervisor
sudo apt-get install supervisor
インストールしたらsupervisordメインプロセスの設定ファイルを作成できます.$ echo_supervisord_conf > /etc/supervisord.conf
プロジェクトディレクトリの下に、エクセルフォルダを新規作成し、エクセルが印刷した情報を保存します. supervisord.conf ,
[program:celery.worker]
command= /home/yue/.virtualenvs/practice/bin/celery -A worker -l info
directory=/home/yue/ celery4.3 /
user=root
numprocs=1
autostart=true ;# supervisor ,
autorestart=true ;#
startretries=3 ;#
redirect_stderr=true ;# stderr stdout
stdout_logfile=/home/yue/ celery4.3 / /celerylog/celery_worker_out.log
[program:celery.beat]
command=/home/yue/.virtualenvs/practice/bin/celery -A beat -l info
directory=/home/yue/ celery4.3 /
user=root
numprocs=1 ;#
autostart=true ;# supervisor ,
autorestart=true ;#
startretries=3 ;#
redirect_stderr=true ;# stderr stdout
stdout_logfile=/home/yue/ celery4.3 /chinare_data_center/celerylog/celery_beat_out.log
スーパーバイソの管理 supervisor:supervisord -c supervisord.conf
,
:ps -ef | grep supervisord
root 15334 6359 0 11:42 ? 00:00:00 /usr/bin/python /usr/bin/supervisord -c supervisord.conf
supervisor :kill -s SIGTERM 15334
supervisor:supervisorctl shutdown
:supervisorctl reload
1 )supervisorctl status
2)supervisorctl stop
3)supervisorctl start
4)supervisorctl restart
6)supervisorctl update
:supervisord server ,supervisorctl client