1. 环境

python==2.7

djang==1.11.2  # 1.8, 1.9, 1.10应该都没问题

celery-with-redis==3.0  # 需要用到redis作为中间人服务(Broker)
celery==3.1.25 # 安装上面的会自动安装
kombu==3.0.37
billiard==3.3.0.23 django-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_import

import os

from 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 # noqa app = 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.task
def cus_task(*arg):
print('This is a test task')
  • 编辑Demo/app/views.py
from django.shortcuts import render, HttpResponse

from .tasks import cus_task

def index(request):
cus_task.delay()
return HttpResponse("Test async task")
  • 启动djangocelery
# django
python manage.py runserver # celery
celery -A Demo worker -l debug

admin后台中配置celery计划

  • 配置
  • # 如上settings.py中的设置, 后执行
    python manage.py migrate djcelery

  • 登陆admin后台进行配置
  • # Djcelery模块列表
    
    Crontabs  # 同linux crontab
    Intervals # 间隔
    Periodic tasks # 周期任务
    Tasks
    Workers

  配置一个periodic task任务内容 app.tasks.cus_task 用crontabinterval设置每5s执行一次

  • 启动django和celery, 并查看日志
  • celery -A Demo worker -l debug
    
    # 另一个窗口
    celery -A Demo beat -l debug --max-interval=10 # 每10s扫描一次djcelery任务

nohup 后台启动

nohup celery -A Demo worker -l debug > abc.log &

django —— Celery实现异步和定时任务的更多相关文章

  1. Django + Celery 实现动态配置定时任务

    哈喽,今天给大家分享一篇Django+Celery实现动态配置定时任务,因为最近也是无意间看到一位大佬关于这块的文章,然后自己觉得不错,也想学习写一下,然后最终实现功能是在前端页面统一管理计划任务,大 ...

  2. django+celery+redis实现运行定时任务

    0.目的 在开发项目中,经常有一些操作时间比较长(生产环境中超过了nginx的timeout时间),或者是间隔一段时间就要执行的任务. 在这种情况下,使用celery就是一个很好的选择.   cele ...

  3. Django+Celery 执行异步任务和定时任务

    celery是一个基于python开发的简单.灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度.采用典型的生产者-消费者模型,主要由三部分组成: 1. 消 ...

  4. django -- Celery实现异步任务

    1. 环境 python==2.7 djang==1.11.2 # 1.8, 1.9, 1.10应该都没问题 celery-with-redis==3.0 # 需要用到redis作为中间人服务(Bro ...

  5. Django Celery Redis 异步执行任务demo实例

    一.windows中安装redis 安装过程见 <在windows x64上部署使用Redis> 二.环境准备 requirements.txt Django==1.10.5 celery ...

  6. 使用django + celery + redis 异步发送邮件

    参考:http://blog.csdn.net/Ricky110/article/details/77205291 环境: centos7  +  python3.6.1 + django2.0.1  ...

  7. Celery+python+redis异步执行定时任务

    我之前的一篇文章中写了[Celery+django+redis异步执行任务] 博文:http://blog.csdn.net/apple9005/article/details/54236212 你会 ...

  8. Django搭配Celery进行异步/定时任务(一)初步搭建

    以下需求场景很常见: 1. 用户点击页面按钮,请求后台进行一系列耗时非常高的操作,页面没有响应/一直Loading,用户体验非常不好. 2. 某些数据需要预先处理,每天凌晨的时候进行运算,大约半小时到 ...

  9. Django+Celery+xadmin实现异步任务和定时任务

    Django+Celery+xadmin实现异步任务和定时任务 关注公众号"轻松学编程"了解更多. 一.celery介绍 1.简介 [官网]http://www.celerypro ...

随机推荐

  1. php安装 出现Sorry, I cannot run apxs. ***错误解决方法

    # tar zvxf php-5.1.2.tar.gz# cd php-5.1.2# ./configure --prefix=/usr/local/php --with-mysql=/usr/loc ...

  2. linux下网络配置小节[from 老男孩的linux运维笔记]

    对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太多的初学者徘徊在门外就不奇怪了, 这里,老男孩老师花了一些时间总结了这个文档小结,也还不够完善,欢迎大家补充,交流. ...

  3. linux RPM包安装、更新、删除等操作命令简明总结, 如何查看yum安装的软件路径 ?

    rpm -ivh package.rpm 安装一个rpm包rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告rpm -U package.rpm 更新一个 ...

  4. VBS调用OUTLOOK发送邮件,windows计划任务定时拉起VBS调用OUTLOOK发送邮件

    OUTLOOK有延迟传递功能,可延迟传递的发送邮件在功能设计时(mircosoft的support帮助页的解释)就是邮件发送时的时间而不是邮件发送成功后的时间.比如早上10点发一封11点后的延迟传递邮 ...

  5. linux下串口工具minicom

    系统环境:ubuntu  14 .04  和ubuntu 16.04 我当时的需要主要是两个,能够看到正常串口输出,并且把串口内容实时输出到文件中 那接下来工作主要是两个:1.安装 2.配置 相信各位 ...

  6. Event事件的兼容性(转)

    window.event问题问题说明:window.event 只能在IE下运行,而不能在Firefox下运行,这是因为Firefox的event只能在事件发生的现场使用.解决方法:在事件发生的函数上 ...

  7. k8s实战之Service

    一.概述 为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持,k8s中的核心要素Service便提供了一套简化的服务代理和发现机制,天然适应微服务架构,任何 ...

  8. 【Java】解析JScrollPane类的使用

    在这篇博文中,笔者介绍JScrollPane类的使用,JScrollPane类可以为组件添加滚动条.在这里笔者不会详细介绍该类的方法有哪些,因为在API上已经写得一清二楚了.在这篇博文中,笔者重点介绍 ...

  9. 【MySQL】乐观锁和悲观锁

    最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持 ...

  10. int和Integer之间的区别和联系

          在工作中使用==埋下的坑这篇博文中,我们看到当使用基本类型的时候==是完全没有问题的,部分或者混合使用基本类型和装箱基本类型的时候,就可能出现问题了,那么我们可能会想基本类型和装箱基本类型 ...