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