1、在settings.py 同级目录下,新增一个celery.py的文件

需要注意的是:你的项目目录名要和配置一样
例如我的项目目录名就是 base_django_api
我的目录结构如下:

# celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery, platforms
from django.conf import settingsos.environ.setdefault('DJANGO_SETTINGS_MODULE', 'base_django_api.settings')
app = Celery('base_django_api')app.config_from_object('django.conf:settings')app.autodiscover_tasks()platforms.C_FORCE_ROOT = True@app.task(bind=True)
def debug_task(self):print('Request: {0!r}'.format(self.request))

2、修改settings.py 同级目录下的 __init__.py文件

加入一下内容

from __future__ import absolute_import, unicode_literals# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app__all__ = ('celery_app',)

3、在你的app里面创建tasks.py文件

例如:本例在 base app内创建一个tasks.py文件

from __future__ import absolute_import, unicode_literals
from celery import shared_task
from base_django_api.celery import app
import time@shared_task
def mul(x, y):print('发生耗时操作...')time.sleep(10) # 模拟耗时操作return x * y

4、使用视图函数注册到路由,通过http请求来出发异步任务

本例:用来模拟实际场景中的异步请求,在收到http请求时,发起异步任务去执行,http调用处直接马上返回结果,优化用户体验。
修改对应的视图函数views.py

# apps/base/views.py
from .tasks import mul
class BeginCelery(APIView):def get(self, request):'''测试开启celery'''try:json_data = {"message": "ok", "errorCode": 0, "data": {}}#发起异步任务 mul_result = mul.delay(3,5)return Response(json_data)except Exception as e:print('发生错误:',e)return Response({"message": "出现了无法预料的view视图错误:%s" % e, "errorCode": 1, "data": {}})

注册到路由urls.py

from base.views import BeginCelery
from django.urls import path, includeurlpatterns = [path('celery/', BeginCelery.as_view(), name='celery测试'),
]

启动Django:

python manage.py runserver

启动celery:

celery -A base_django_api worker -l info

调用接口测试

查看celery运行结果

5、为什么本例不要Celery实现定时任务

因为在Django中,使用django_crontab 实现定时任务,更加的简洁、方便,感兴趣的同学可以查一下。

Django 中使用Celery实现异步任务相关推荐

  1. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  2. Django中使用Celery(附赠代码)

    一.简介 Celery是由Python开发.简单.灵活.可靠的分布式任务队列,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务.Celery侧重于实时操作,但对调度支持也很好,其 ...

  3. Django中使用Celery

    创建Django项目:略过 配置python 多任务一定要写celery celery配置 视图中: 自己配置URL: 启动worker celery worker -A celery_task -l ...

  4. 在django中使用celery

    前言: 针对高延时任务, 直接在一次网络请求中处理完毕会导致很不好的体验, celery则可以不阻塞请求后台处理这些任务, 并且可以使用django的models进行数据库操作. 环境 python ...

  5. celery异步执行任务在Django中的应用实例

    1. 创建django项目celery_demo, 创建应用demo: django-admin startproject celery_demo python manage.py startapp ...

  6. Django配置celery执行异步任务和定时任务

    原生celery,非djcelery模块,所有演示均基于Django2.0 celery是一个基于python开发的简单.灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线 ...

  7. Django中Celery简介

    初识Celery: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,可将一些耗时的任务放入该消息队列中处理,一些定时任务也可以放入队列中自动执行 ...

  8. Django+redis+celery实现异步任务

    1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...

  9. Django 中celery的使用

    1.django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应. 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件.发送短信.大数据统计等等,这些 ...

最新文章

  1. 亲身经历,在实验室不要乱按按钮!!
  2. List.addAll方法的入参不能为null
  3. strace动态调试 php,PHP实现通过strace定位故障原因的方法
  4. 删除oracle 连接进程,如何查看和清除oracle无用的连接进程
  5. 自动化测试平台搭建从零开始
  6. winform + INotifyPropertyChanged + IDataErrorInfo + ErrorProvider实现自动验证功能
  7. 无线短距通信技术标准:WIFI,蓝牙,ZigBee
  8. bzoj 4516: [Sdoi2016]生成魔咒
  9. java流 视频_java如何对视频文件处理?包括拉流推流视频截取等?
  10. weibo.cn html5,微博爬虫:爬取微博正文、关注人
  11. 百度音乐助手 下载高品质音乐
  12. 不用vpn的谷歌翻译网址
  13. 方差互换(Variance Swap)定价推导及VIX相关介绍
  14. 儿童节html5小游戏,2016六一儿童节主题班会小游戏大全
  15. python高效控制模拟器_使用Python实现RISCV模拟器(一)
  16. window下Python查看已经启动的进程名称并关闭
  17. 获取手机电池百分比和电池容量方法
  18. javascript英语单词音节拆分_英语单词音节拆分程序
  19. echarts柱状图自定义显示内容
  20. Spark On YARN 环境搭建

热门文章

  1. mongodb 内置根据经纬度获取圆形范围的数据
  2. yoink for mac版使用图文实用技巧~
  3. 搜狐视频P2P技术揭秘 - 架构篇
  4. String StringBuffer 和 StringBuilder 的区别是什么?
  5. Burp Suite汉化
  6. CTF-网络信息安全攻防学习平台(基础关)
  7. 2022中国眼博会,山东视力防控展会,近视镜,中国近视矫正展
  8. 软银201亿美元收购Sprint七成股权
  9. 口腔医学重点精心整理【经典资料】
  10. DataReader转换DataTable