django —— Celery实现异步和定时任务
来源:互联网 发布:msp430用什么软件 编辑:程序博客网 时间:2024/06/08 18:16
1. 环境
python==2.7djang==1.11.2 # 1.8, 1.9, 1.10应该都没问题celery-with-redis==3.0 # 需要用到redis作为中间人服务(Broker)celery==3.1.25 # 安装上面的会自动安装kombu==3.0.37billiard==3.3.0.23django-celery==3.2.2 # celery插件, 实现定时任务
celery>=4.0 对此环境会有报错, 暂不建议在此环境下使用
2. 安装
pip install django==1.11.2 celery-with-redis==3.0 django-celery==3.2.2
3. 安装Redis, 用作Broker (RabbitMQ 官方推荐, 但安装麻烦点)
教程很多, 略
4. 新建django项目
官方文档
- Demo - Demo setting.py wsgi.py urls.py - app - migrations models.py views.py ...
- 配置
settings.py
INSTALLED_APPS = ( ... 'app', 'djcelery',# django-celery 可以在admin后台定义定时任务, 开始前需要直接migrate)BROKER_URL = 'redis://127.0.0.1:6379/0'BROKER_TRANSPORT = 'redis'CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' # 数据库调度
- 新建文件
Demo/Demo/celery.py
from __future__ import absolute_importimport osfrom celery import Celery# set the default Django settings module for the 'celery' program.os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Demo.settings')from django.conf import settings # noqaapp = Celery('Demo')# Using a string here means the worker will not have to# pickle the object when using Windows.app.config_from_object('django.conf:settings')app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)@app.task(bind=True)def debug_task(self): print('Request: {0!r}'.format(self.request))
- 新建
Demo/app/tasks.py
from Demo.celery import app@app.taskdef cus_task(*arg): print('This is a test task')
- 编辑
Demo/app/views.py
from django.shortcuts import render, HttpResponsefrom .tasks import cus_taskdef index(request): cus_task.delay() return HttpResponse("Test async task")
- 启动
django
和celery
# djangopython manage.py runserver# celerycelery -A Demo worker -l debug
admin后台中配置celery
计划
- 配置
# 如上settings.py中的设置, 后执行python manage.py migrate djcelery
- 登陆admin后台进行配置
# Djcelery模块列表Crontabs # 同linux crontabIntervals # 间隔Periodic tasks # 周期任务TasksWorkers
配置一个
periodic task
任务内容app.tasks.cus_task
用crontab
或interval
设置每5s执行一次
- 启动django和celery, 并查看日志
celery -A Demo worker -l debug# 另一个窗口celery -A Demo beat -l debug --max-interval=10 # 每10s扫描一次djcelery任务
阅读全文
0 0
- django —— Celery实现异步和定时任务
- django-celery定时任务
- django+celery+redis实现运行定时任务
- Django基于celery的异步任务实现
- Django 使用 Celery 实现异步任务
- Django中异步任务celery
- Django中使用Celery实现定时任务(用djcelery)
- django使用celery定时任务,使用redis和supervisor。
- django学习笔记7:django和celery实现异步
- Django完成异步工具——celery
- Django + Celery 实现周期任务
- django-celery动态添加定时任务
- 【Python】django-celery执行定时任务
- Python Celery 实现异步任务
- Django搭配Celery进行异步/定时任务(一)初步搭建
- django下使用celery进行异步任务
- Django之celery分布式异步任务队列
- Django 使用celery做异步任务处理
- 新手Struts2自行总结。篇目一
- QT 遍历文件夹内容 读取指定文件
- jeesite文件导入导出
- VBA语法提要
- 关于电脑没有声音的解决方案
- django —— Celery实现异步和定时任务
- 装系统
- ExtJS 6 的一些 样式类配置项
- Ubuntu16.04 python2.7升级python3.5
- Android7.0调用系统相机拍照、相册选择图片、裁剪 图片压缩
- linux下软件安装的方式
- android 透明布局点击不穿透的处理
- 叉乘与反对称矩阵
- java调用摄像头推流demo(针对不同处理器和操作系统)