Django 中的Celery 使用

   

 # 安装 由于版本支持情况 使用时版本不要太高 可能会有冲突

在项目中使用 可以创建一个celeryconfig.py文件

  import djcelery
  djcelery.setup_loader()
  CELERY_IMPORTS=(
      'app.tasks',
  )
  #有些情况可以防止死锁
  CELERYD_FORCE_EXECV=True
  # 设置并发worker数量
  CELERYD_CONCURRENCY=4
  #允许重试
  CELERY_ACKS_LATE=True
  # 每个worker最多执行100个任务被销毁,可以防止内存泄漏
  CELERYD_MAX_TASKS_PER_CHILD=100
  # 超时时间
  CELERYD_TASK_TIME_LIMIT=12*30

在app中创建tasks

  from celery import task

  @task

  def add(a,b):

    with open("a.text",'a',encoding='utf-8') as f:

      f.write(" this is abc!!")

    print(a+b)

视图函数views.py

  from django.shortcuts import render,HttpResponse

  from app.tasks import add

  from datetime import datetime

  def test(request):

    ctime = datetime.now()

    utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())

    from datetime import timedelta

    time_delay = timedelta(seconds=5)

    task_time = utc_ctime + time_delay

      result = add.apply_async(args=[4, 3], eta=task_time) 

    print(result.id)

    return HttpResponse('hello word!')

settings.py中配置

  INSTALLED_APPS = [
      'djcelery',
      'app'
  ]
  from djagocele import celeryconfig
  BROKER_BACKEND='redis' //这里也可以不使用redis,使用其他队列也可以rabbitMQ
  BOOKER_URL='redis://127.0.0.1:6379/1'
  CELERY_RESULT_BACKEND='redis://127.0.0.1:6379/2'
原文地址:https://www.cnblogs.com/yanhui1995/p/9703146.html