1.安装django-celery

  pip install django-celery

2.添加配置 demos/demos/settings.py(我的项目名为demos,这里只是示范,切勿搞混)

# celery 相关配置
# 配置celery时区,默认时UTC。
CELERY_TIMEZONE = TIME_ZONE # 任务队列的链接地址 celery配置redis作为broker。redis有16个数据库,编号0~15。
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/2' # 设置存储结果的后台 结果队列的链接地址
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/3' # 可接受的内容格式
CELERY_ACCEPT_CONTENT = ["json"]
# 任务序列化数据格式
CELERY_TASK_SERIALIZER = "json"
# 结果序列化数据格式
CELERY_RESULT_SERIALIZER = "json"

在项目同名目录下创建 demos/demos/celery.py(必须按照要求来)

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery # 指定Django默认配置文件模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demos.settings') # 为项目demos创建一个Celery实例。
app = Celery('demos') # 这里指定从django的settings.py里读取celery配置,且setting中的配置文件必须以'CELERY_'开头
app.config_from_object('django.conf:settings', namespace='CELERY') # 自动从所有已注册的django app中加载任务
app.autodiscover_tasks()

在已经注册app目录中,创建名为tasks.py的文件(如果取别的名字,celery就扫描不到了)

将程序导入项目同名目录下的dmos/demos/init.py中

from __future__ import absolute_import, unicode_literals

from .celery import app as celery_app

__all__ = ('celery_app',)

3.启动worker

1.先启动redis server

  2.cd到项目目录

     celery -A demos worker --loglevel=INFO

   windows用户:celery -A demos worker --loglevel=INFO -P eventlet

我的版本是,python3.9+django4.0+celery5.0+redis5.0

如果是按照上述方法执行,还有报错,那就极有可能是版本不兼容的问题了。建议去官方文档查看!

4.celery定时任务

from django.shortcuts import HttpResponse
from api import tasks
import datetime def create_task(request):
# 1.立即执行
# result = tasks.add.delay(2, 2) # 2.定时执行
# 获取当前的本地时间
ctime = datetime.datetime.now()
# 本地时间转换为utc时间
utc_ctime = datetime.datetime.utcfromtimestamp(ctime.timestamp())
# 当前utc时间加十秒
utc10 = datetime.timedelta(seconds=10)
# 得到目标时间
target_time = utc_ctime + utc10
# 调用函数,传入参数,以及函数执行时间
result = tasks.add.apply_async(args=[20, 3], eta=target_time) return HttpResponse(result.id)
def get_result(request):
"""
result_object.status # 获取状态
result_object.get() # 获取数据
result_object.forget() # 把数据在backend中移除
result_object.revoke() # 取消任务
result_object.revoke(terminate=True) # 强制取消任务
"""
nid = request.GET.get('nid') from celery.result import AsyncResult
from demos import celery_app result_object = AsyncResult(id=nid, app=celery_app) if result_object.successful():
data = result_object.get()
result_object.forget()
return HttpResponse(data)
elif result_object.failed():
pass else:
pass

Django-django-celery的配置的更多相关文章

  1. django集成celery

    Celery是一个基于分布式消息传递的开源异步任务队列,在django实际应用场景下,往往有一些较为耗时,但并不需要返回值的任务, 例如发送邮件,更新我们自己的统计数据库,这时我们可以将这些任务交由c ...

  2. Django中Celery的实现介绍(一)

    Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...

  3. django和celery结合应用

    django+celery项目结构 - project_name - app01 - __init__.py - admin.py - views.py - modes.py - tasks.py # ...

  4. Django中Celery http请求异步处理(四)

    Django中Celery http请求异步处理 本章延续celery之前的系列 1.settings配置 2.编写task jib_update_task任务为更新salt jid数据 3.url设 ...

  5. Django 使用 Celery 实现异步任务

    对于网站来说,给用户一个较好的体验是很重要的事情,其中最重要的指标就是网站的浏览速度.因此服务端要从各个方面对网站性能进行优化,比如可采用CDN加载一些公共静态文件,如js和css:合并css或者js ...

  6. 4.Django使用celery

    1. 配置celery   创建django项目celery_demo, 创建应用demo: django-admin startproject celery_demo python manage.p ...

  7. Django使用Celery进行异步任务

    Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...

  8. django、celery异步发邮件

    django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...

  9. python django与celery的集成

    一.celery与django 关于celery介绍和使用可以查看上篇Python中任务队列-芹菜celery的使用 关于django的介绍和使用可查看python django框架+vue.js前后 ...

  10. django 1.8 日志配置

    django 1.8 日志配置 以下为setings配置logging代码片段 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_ ...

随机推荐

  1. Integer使用==比较的问题

    Integer使用==比较的问题 new一个对象 public Integer(int value) { this.value = value; } 自动装箱 public static Intege ...

  2. 数据结构和算法day1(Java)

    1.什么是数据结构? 数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据. 1.2.数据结构的分类: 逻辑结构 和物理结构 逻辑结构: 集合结构(无关系).线性结构(一对一).树形 ...

  3. 11.SpringCloud Alibaba

    SpringCloud的几大痛点 SpringCloud部分组件停止维护和更新,给开发带来不便 SpringCloud部分环境搭建复杂,没有完善的可视化界面,我们需要大量的二次开发和定制 Spring ...

  4. 第六周作业-N67044-张铭扬

    1. 简述DDL,DML,DCL,DQL,并且说明mysql各个关键字查询时候的先后顺序 DDL:Data Defination Language 数据定义语言,主要是建表.删除表.修改表字段等操作 ...

  5. python + pyqt 实现的你下载css背景图片的小工具(最终版)

    学习python有三个星期了,算是做的第一个小工具,其实也没必要做成图形界面,只是为的GUI学习(再说技术总归给人使用的,熟练很多shell命令只是个"匠人".) win8下面: ...

  6. Asp.NET core/net 5接口返回实体含有long/int64的属性序列后最后几位变为0的解决

    Asp.NET core /net 5接口返回实体含有long/int64的属性时,序列后最后几位变为0的. 不得不吐槽一下MS,这种事还有问题,NND. 解决方案在startup.cs中添加:opt ...

  7. go项目,出现too many open files

    刚开始碰到这种异常,以为是代码写的有问题,准备抽时间去改,等有时间正式此问题的时候,发现这种问题一般只会在linux系统上出现,原因如下:linux系统限制了文件打开的最大文件句柄数,系统默认一般是1 ...

  8. MS14-064/CVE-2014-6332漏洞复现(OLE远程代码执行漏洞、IE浏览器漏洞)

    漏洞介绍:MS14-064 Microsoft Internet Explorer Windows OLE Automation Array Remote Code Execution,主要利用IE浏 ...

  9. AR设备使用Vuforia的优化

    主要是设置识别的范围,在应用内检测当前识别图和我的距离,以及识别图和我的角度,当进入了规定的范围和角度后, 在进行定位功能.我目前用的是距离在两米内 摄像机和识别图的角度正负不超过30度的范围 Vuf ...

  10. Software_C#_grammer_Deletegate--Strategy

    2018-04-30 18:59:04. 由 委托的 动态选择方法 联想到的 Strategy Pattern 一 : 策略模式 将  宿主   与  算法 分离, 算法被封装为对象, 客户端代码用 ...