1.首先在项目同名目录下建一个celery.py

  1. from __future__ import absolute_import
  2. import os
  3. from celery import Celery
  4. from datetime import timedelta
  5. from kombu import Queue
  6.  
  7. # set the default Django settings module for the 'celery' program.
  8. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'OpsManage.settings')
  9. from django.conf import settings
  10.  
  11. app = Celery('OpsManage')
  12.  
  13. # Using a string here means the worker will not have to
  14. # pickle the object when using Windows.
  15. # 配置celery
  16. class Config:
  17. BROKER_URL = 'amqp://guest:guest@localhost:5672//'
  18. CELERY_RESULT_BACKEND = 'redis://localhost:6379'
  19. CELERY_ACCEPT_CONTENT = ['application/json']
  20. CELERY_TASK_SERIALIZER = 'json'
  21. CELERY_RESULT_SERIALIZER = 'json'
  22. CELERY_TASK_RESULT_EXPIRES = 60 * 60
  23. CELERY_TIMEZONE = 'Asia/Shanghai'
  24. CELERY_ENABLE_UTC = True
  25. CELERY_ANNOTATIONS = {'*': {'rate_limit': '500/s'}}
  26. CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
  27.  
  28. app.config_from_object(Config)
  29. # 到各个APP里自动发现tasks.py文件
  30. app.autodiscover_tasks()
  31. #crontab config
  32. app.conf.update(
  33. CELERYBEAT_SCHEDULE = {
  34. # 每隔30s执行一次函数
  35. 'every-30-min-add': {
  36. 'task': 'apps.tasks.celery_assets.push_host_by_salt_tasks',
  37. 'schedule': timedelta(seconds=30)
  38. # # 每天凌晨12点
  39. # 'schedule': crontab(minute=0, hour=0)
  40. },
  41. },
  42. )
  43. # kombu : Celery 自带的用来收发消息的库, 提供了符合 Python 语言习惯的, 使用 AMQP 协议的高级接口
  44. Queue('transient', routing_key='transient',delivery_mode=1)

2.在settings.py里配置celery

  1. INSTALLED_APPS = [
  2. ......
  3. 'django_celery_beat',
  4. 'django_celery_results',
  5. ]

3.在项目同名目录下的__init__.py文件里申明celery任务,记得要去检测呀

  1. # coding:utf-8
  2. from __future__ import absolute_import, unicode_literals
  3.  
  4. # This will make sure the app is always imported when
  5. # Django starts so that shared_task will use this app.
  6. from celery import app as celery_app
  7.  
  8. __all__ = ['celery_app']
  9.  
  10. import pymysql
  11. pymysql.install_as_MySQLdb()

4.在task.py里执行任务的函数上加@

  1. from celery import task
  2.  
  3. # 定时任务
  4. @task
  5. def push_host_by_salt_tasks():
  6. “”“balabala”“”
  7. return '这里是定时任务'

Django-如何写好一个celery定时任务的更多相关文章

  1. Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: #coding:utf- from celery.task.schedules ...

  2. Bamboo Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  3. celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)

    一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...

  4. celery 定时任务时间篇

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  5. django+xadmin+djcelery实现后台管理定时任务

    继上一篇中间表的数据是动态的,图表展示的数据才比较准确.这里用到一个新的模块Djcelery,安装配置步骤如下: 1.安装 redis==2.10.6 celery==3.1.23 django-ce ...

  6. 五分钟看懂Celery定时任务

    Django下使用Celery 使用场景: 1, Web应用. 当用户触发的一个操作需要很长时间才能执行完成,那么就可以把它当做一个任务去交给Celery去异步执行, 执行完成之后再返回给用户,这短时 ...

  7. django 异步任务实现及Celery beat实现定时/轮询任务

    Celery定时任务 requirements celery==3.1.25 异步任务 django-celery==3.2.2 定时任务管理包 redis==2.10.6 django-redis- ...

  8. 将celery定时任务设置为根据本地时区触发

    默认celery的时区为UTC,如果要在django项目中将celery定时任务配置为根据本地时区触发,则需要修改 在setttings.py 添加以下任意一行: # celery 相关配置 CELE ...

  9. 二、Django用Eclipse编写一个登录界面

    一.Django用Eclipse编写一个登录界面 二.Django用Eclipse编写一个登录界面Ajax和Django交互 各软件版本:Python 2.7.14,django 1.6.11 原来已 ...

随机推荐

  1. 深入浅出Spring(一)

    现在很多的企业级项目中基本上都会用到了Spring框架,那么为什么会出现Spring,Spring是什么?这次的博文我主要为大家简单介绍一下Spring. Java EE优缺点 我们都知道在2003年 ...

  2. Ansible 常见模块介绍

    目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...

  3. 单例模式-python

    单例模式 什么是单例 当实例化多次得到的对象中存放的属性都一样的情况,应该将多个对象指向同一个内存,即同一个实例 有什么优点 在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管 ...

  4. 查看/设置JVM使用的垃圾收集器

    一.设置垃圾收集器的参数 -XX:+UseSerialGC,虚拟机在Client模式下的默认值,Serial+Serial Old -XX:+UseParNewGC,ParNew+Serial Old ...

  5. 鲲鹏云实验-Python+Jupyter机器学习基础环境

    [摘要] 介绍Ubuntu 18.04环境下Python3常用科学计算和数据分析包(numpy, scipy, matplotlib, sklearn, pandas)的安装,以及Jupyter No ...

  6. java内存模型和内存结构

    java内存模型说的是多线程,网上可能会有写误导,并不是什么堆.栈.方法区,很多人都会搞混.说白了就是多线程中主线程和本地线程之间的一个数据可见性问题. jmm:java内存模型:jvm:java内存 ...

  7. CF 1132A,1132B,1132C,1132D,1132E,1132F(Round 61 A,B,C,D,E,F)题解

    A.Regular bracket sequence A string is called bracket sequence if it does not contain any characters ...

  8. 了解一下Mysql分布式事务及优缺点、使用案例(php+mysql)

    在开发中,为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上),但是一个业务场景可能会同时处理两个表的操作.在这种场景下,事务的提交会变得相对复杂,因为多 ...

  9. shell脚本调用python模块

    python helloworld.py代码为 # coding:utf-8 from __future__ import print_function import sys print(sys.pa ...

  10. linux—ln

    1.  软连接:不可删除源文件,删除源文件导致链接文件找不到,出现红色闪烁. 2.  硬链接:  源文件删除后,链接文件可以正常打开,链接前后的文件inode号相同,硬链接只能针对文件做链接,,不能针 ...