2016-09-08 6 views
1

supervisor 아래 셀러리 비트는 샐리 직원에게 장고 앱을 주기적으로 제공합니다. 나는 task1, task2, task3task4의 4 가지 작업을 가지고 있습니다. 최근 나는 다섯 번째 과제를 만들었습니다 : task5.셀러리가 오래된 (제거 된) 작업을 수행합니다.

내 문제는 내가 내 직원으로부터 task5을 주석 처리하고 settings.py에서 해당 언급을 삭제하고 셀러리 비트와 셀러리 작업을 다시 시작했다는 것입니다. 그러나 나는 여전히 task5이 주기적으로 나타나고 있음을 알았다.

왜 이런 일이 발생하며 정기적 인 작업을 어떻게 업데이트 할 수 있습니까? settings.py에서


, 내가 가진 :

command=python manage.py celery beat -l info 
directory = /home/myuser/myproject/ 
environment=PATH="/home/myuser/envs/myenv/bin",VIRTUAL_ENV="/home/myuser/envs/myenv",PYTHONPATH="/home/myuser/envs/myenv/lib/python2.7:/home/myuser/envs/myenv/lib/python2.7/site-packages" 
user=mhb11 
numprocs=1 
stdout_logfile = /etc/supervisor/logs/celerybeat.log 
stderr_logfile = /etc/supervisor/logs/celerybeat.log 
autostart = true 
autorestart = true 
startsecs=10 
stopwaitsecs = 600 
killasgroup=true 
priority=999 

하는 추가 정보를 원하시면 저에게 질문

import djcelery 
    djcelery.setup_loader() 
    # config settings for Celery Daemon 

    # Redis broker 
    BROKER_URL = 'redis://localhost:6379/0' 

    BROKER_TRANSPORT = 'redis' 

    # List of modules to import when celery starts, in myapp.tasks form. 
    CELERY_IMPORTS = ('myapp.tasks',) 

    CELERY_ALWAYS_EAGER = False 

    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' 
    #The backend is the resource which returns the results of a completed task from Celery. 6379 is the default port to the redis server. 

    CELERY_ACCEPT_CONTENT = ['json'] 
    CELERY_TASK_SERIALIZER = 'json' 
    CELERY_RESULT_SERIALIZER = 'json' 
    CELERY_IGNORE_RESULT=True 

    from datetime import timedelta 

    CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' 

    CELERYBEAT_SCHEDULE = { 
     'tasks.task1': { 
      'task': 'tasks.task1', 
      'schedule': timedelta(seconds=45), 
     }, 
     'tasks.task2': { 
      'task': 'tasks.task2', 
      'schedule': timedelta(seconds=60), # execute every 60 seconds 
      'args':(), 
     }, 
     'tasks.task3': { 
      'task': 'tasks.task3', 
      'schedule': timedelta(seconds=90), # execute every 90 seconds 
      'args':(), 
     }, 
     'tasks.task4': { 
      'task': 'tasks.task4', 
      'schedule': timedelta(seconds=90), # execute every 90 seconds 
      'args':(), 
     }, 
    } 

/etc/supervisor/conf.d/celerybeat.conf는 다음과 같은 포함 필요한 경우. 미리 감사드립니다.

답변

0

대기중인 작업이 이미 있다고 생각합니다.

purge them이 필요합니다. 또는 자신의 ID를 알고있는 경우 (작업 테이블을 덮어 쓰지 않으면 작업 ID가 고유하게 생성됩니다.이 이름은 작업 이름이 아닙니다) revoke them 수 있습니다.

+0

작업을 삭제/취소하는 데 사용되는 동등한 Django 프로젝트 명령은 무엇입니까? –

+0

나는 django 셀러리를 사용하지 않으므로 잘 모르겠다.하지만 나는 웹상에서'python manage.py celery amqp queue.purge '유용한 것을 발견했다. 당신이 원한다면 ... – creativeChips

+0

고마워. , 그것을 체크 아웃합니다. –