djcelery perform asynchronous tasks and regular tasks

import djcelery
from datetime import timedelta

djcelery.setup_loader()

CELERY_QUEUES = {
    'beat_tasks':{
        'exchange':'beat_tasks',
        'exchange_type':'direct',
        'binding_key':'beat_tasks',
    },
    'work_queue': {
        'exchange': ' Work_queue ' ,
         ' exchange_type ' : ' Direct ' ,
         ' binding_key ' : ' work_queue ' , 
    } 
} 

CELERY_DEFAULT_QUEUE = ' work_queue ' 
CELERY_IMPORTS = (
     ' app01.tasks ' , 
) 
# some cases may prevent deadlocks 
CELERYD_FORCE_EXECV = True
 # Set The number of concurrent worker 
CELERYD_CONCURRENCY. 4 = # retry is

= CELERY_ACKS_LATE True
 # per worker to execute up to 100 task is destroyed, it is possible to prevent a memory leak 
CELERYD_MAX_TASKS_PER_CHILD = 100 # timeout 
CELERYD_TASK_TIME_LIMIT * 30 = 12 is 
CELERYBEAT_SCHEDULE = {
     ' Task1 ' : {
         ' Task ' : ' Course-Task ' ,
         ' Schedule ' : timedelta (= seconds The. 5 ),
         ' Options ' : {
             ' Queue ' : ' beat_tasks '
        }
    }
}

celeryconfig.py
# from celery import task
import time
# @task
# def add(x,y):
#     time.sleep(3)
#     return x+y

from celery.task import Task

class CourseTask(Task):
    name = 'course-task'

    def run(self, *args, **kwargs):
        print('start course task')
        time.sleep(4)
        print('args={}, kwargs={}'.format(args, kwargs))
        print('end course task')
tasks.py
from app01.tasks import CourseTask
from django.http import JsonResponse
def do(request):
    print('start do request')
    # CourseTask.delay()
    CourseTask.apply_async(args=('hello',),queue='work_queue')
    print('end do request')
    return JsonResponse({'result':'ok'})
views.py

Guess you like

Origin www.cnblogs.com/xuqidong/p/12229999.html