Django-django-celery的配置
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的配置的更多相关文章
- django集成celery
		
Celery是一个基于分布式消息传递的开源异步任务队列,在django实际应用场景下,往往有一些较为耗时,但并不需要返回值的任务, 例如发送邮件,更新我们自己的统计数据库,这时我们可以将这些任务交由c ...
 - Django中Celery的实现介绍(一)
		
Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...
 - django和celery结合应用
		
django+celery项目结构 - project_name - app01 - __init__.py - admin.py - views.py - modes.py - tasks.py # ...
 - Django中Celery http请求异步处理(四)
		
Django中Celery http请求异步处理 本章延续celery之前的系列 1.settings配置 2.编写task jib_update_task任务为更新salt jid数据 3.url设 ...
 - Django 使用 Celery 实现异步任务
		
对于网站来说,给用户一个较好的体验是很重要的事情,其中最重要的指标就是网站的浏览速度.因此服务端要从各个方面对网站性能进行优化,比如可采用CDN加载一些公共静态文件,如js和css:合并css或者js ...
 - 4.Django使用celery
		
1. 配置celery 创建django项目celery_demo, 创建应用demo: django-admin startproject celery_demo python manage.p ...
 - Django使用Celery进行异步任务
		
Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...
 - django、celery异步发邮件
		
django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...
 - python django与celery的集成
		
一.celery与django 关于celery介绍和使用可以查看上篇Python中任务队列-芹菜celery的使用 关于django的介绍和使用可查看python django框架+vue.js前后 ...
 - django 1.8 日志配置
		
django 1.8 日志配置 以下为setings配置logging代码片段 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(_ ...
 
随机推荐
- 解决.Net Core3.0 修改cshtml代码之后必须重新生成才可以看到效果
			
1.安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包 2.在Startup中ConfigureServices方法里面加入services.Ad ...
 - PostgreSQL控制文件讲解及案例
			
PostgreSQL控制文件内容: 主要分为是三部分,初始化静态信息.WAL及检查点的动态信息.一些配置信息. 我们可以用过pg_controldata命令直接读取PostgreSQL控制文件内容: ...
 - pat乙级:模拟链表问题(汇总,包含所有pat中链表题目分析)
			
更新:优化文章结构,增加了部分内容如(1110区块反转)和自己代码和他人代码分析.看完你就懂了 转载请注明出处和链接地址:(https://www.cnblogs.com/ahappyfool/p/1 ...
 - 溢出标志位OF与进位标志位CF判断
			
1.OF与CF概述 OF(Overflow Flag,溢出标志位):有符号数之间加减运算的溢出标志 CF(Carry Flag,进位标志位):无符号数之间加减运算的溢出标志 快速判断(加法)(减法可转 ...
 - [网鼎杯2020]you_raise_me_up
			
[网鼎杯2020]you_raise_me_up 目录 [网鼎杯2020]you_raise_me_up 题目 分析 解法一:sage discrete_log()使用示例 补充 解法二:python ...
 - 让CSS flex布局最后一行列表左对齐的N种方法
			
原文链接https://mp.weixin.qq.com/s?__biz=MjM5MDA2MTI1MA==&mid=2649091838&idx=1&sn=fa4e1ed1e0 ...
 - VMware 关于mininet
			
1.mininet安装是git clone git://github.com/mininet/mininet.git (git clone http://github.com/minine ...
 - 你到底懂不懂JavaScript?来做做这12道面试题试试!
			
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 21 天,点击查看活动详情 JavaScript 是每一个前端开发者都应该掌握的基础技术,但是很多时候,你可能并不完全懂 Jav ...
 - PHP接口微信支付
			
PHP后台调用微信支付下单function wx_getPayRequest($openid, $orderid, $rmb, $title,$appoids){ $nonce = $orderid. ...
 - JavaSE——封装
			
封装概述 是面向对象三大特征之一(封装,继承,多态) 对象代表什么,就得封装对应的数据,并提供数据对应的行为 封装代码实现 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来 ...