目录结构

第一步  celery_task 里面的celery文件

  1. import time
  2. from celery import Celery
  3. # celery
  4. from celery.schedules import crontab
  5.  
  6. # 将此文件celery启动 windows celery worker -A celery_task --loglevel=info -P gevent
  7. # 将此文件celery启动 linux celery worker -A celery_task --loglevel=info
  8.  
  9. # 异步任务 Async Task
  10. # 定时任务 Celery Beat
  11. # 消息中间件 Broker
  12. # 任务执行单元 Celery Worker
  13. # 结果存储 Backend
  14.  
  15. # 消息中间件 Broker
  16. broker = 'redis://192.168.10.10'
  17. # 结果存储 Backend
  18. backend = 'redis://192.168.10.10/0'
  19.  
  20. app = Celery('my_task', broker=broker, backend=backend,
  21. include=['celery_task.celery_task_one', 'celery_task.celery_task_two',
  22. ])
  23.  
  24. # 时区
  25. app.conf.timezone = 'Asia/Shanghai'
  26. # 是否使用UTC
  27. app.conf.enable_utc = False
  28.  
  29. # 我要对beat任务生产做一个配置,这个配置的意思就是每10秒执行一次 celery_task.celery_task_one(10,10)
  30.  
  31. app.conf.beat_schedule = {
  32. "each10s_task": {
  33. "task": "celery_task.celery_task_one.add",
  34. "schedule": 30, # 每30秒钟执行一次 # 'schedule': timedelta(seconds=30),
  35. "args": (10, 10)
  36. },
  37. "each1m_task": {
  38. "task": "celery_task.celery_task_two.add_add",
  39. "schedule": crontab(minute='*/1'), # 每一分钟执行一次
  40. "args": (10, 30)
  41. },
  42. "each24hours_task": {
  43. "task": "celery_task.celery_task_two.add",
  44. "schedule": crontab(), # 每一分钟执行一次
  45. "args": (10, 100000)
  46. }
  47. }
  48.  
  49. # 任务结果过期设置 `result_expires=3600' 。默认设置是1天,
  50. app.conf.update(
  51. result_expires=3600,
  52. )
  53.  
  54. # 以上配置完成之后,还有一点非常重要
  55. # 不能直接创建Worker了,因为我们要执行周期任务,所以首先要先有一个任务的生产方
  56. # celery beat -A celery_task
  57. # celery worker -A celery_task -l INFO -P eventlet

第二步 do_task

  1. from celery_task.celery_task_one import add as add1
  2. from celery_task.celery_task_two import add as add2
  3. from celery_task.celery import app
  4.  
  5. from celery.schedules import crontab
  6.  
  7. # 将任务交给Celery的Worker执行
  8. res = add1.delay(1, 3)
  9.  
  10. print(res.id)
  11.  
  12. res = add2.delay(1, 3)
  13.  
  14. print(res.id)
  15.  
  16. """
  17. Celery4
  18. 新版的好处是,可以把定时任务和普通的任务一样单独定义了。多了 @app.on_after_configure.connect 这个装饰器,3版本是没有这个装饰器的。
  19. 写代码
  20. 单独再创建一个py文件,存放定时任务:
  21.  
  22. 链接:https://www.jianshu.com/p/c622f5f5d015
  23. """

第三步 将所有任务 写在celery_task 下面  'celery_task.celery_task_one', 'celery_task.celery_task_two' 进行调取执行

  1. 'celery_task.celery_task_one'

    from .celery import app
  2. import time
  3.  
  4. @app.task
  5. def add(x, y):
  6. time.sleep(5)
  7. return x + y
  1. 'celery_task.celery_task_two' 
    from .celery import app
  2. import time
  3.  
  4. @app.task
  5. def add(x, y):
  6. time.sleep(5)
  7. return x * y
  8.  
  9. @app.task
  10. def add_add(x, y):
  11. time.sleep(5)
  12. return x * y

# 在 celery_task 目录下执行  是用来生产定时任务(app.conf.beat_schedule配置的)

  1. # celery beat -A celery_task

    -------------------------------------------------------------

    # 在 celery_task 目录下执行,这个的目的是启动 worker , worker是用来执行,生产的任务
  1. # celery worker -A celery_task -l INFO -P eventlet
  1. # 将此文件celery启动 windows celery worker -A celery_task --loglevel=info -P gevent
  2. # 将此文件celery启动 linux celery worker -A celery_task --loglevel=info
  1.  
  1. # 在 celery_task 目录下执行

celery 简单示例的更多相关文章

  1. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  2. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  3. 根据juery CSS点击一个标签弹出一个遮罩层的简单示例

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

  5. demo工程的清单文件及activity中api代码简单示例

    第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...

  6. spring-servlet.xml简单示例

    spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...

  7. SignalR 简单示例

    一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...

  8. Web API 简单示例

    一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...

  9. celery简单应用

    写作背景介绍 在celery简单入门中已经介绍了写作的背景,这篇文章主要是深入介绍celery的使用技巧.在实际的项目中我们需要明确前后台的分界线,因此我们的celery编写的时候就应该是分成前后台两 ...

随机推荐

  1. k8s 安装 rabbitMQ 单机版

    rabbitMQ docker镜像使用rabbitmq:3.8-management service.yaml文件 apiVersion: v1 kind: Service metadata: nam ...

  2. 一键打造vim ide 支持python golang shell等高级特性

    1.vim-for-devops github: https://github.com/yxxhero/vim_for_devops 利用vim插件打造支持python.shell.golang的id ...

  3. BB网络层测试

    网络层测试2020 问题 1 以下不属于网络层的协议是___A_______. A  DHCP  B ICMP  C IGMP  D ARP 10 分    问题 2 如果目的网络.目的主机都对,但是 ...

  4. 【Https】Https为什么能保证安全?

    HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版. 反观HTTPS协议,它比HTTP协议相比多了以下优势(下文会详细介绍): 数据隐私性:内容经过对称加密,每个连 ...

  5. vim 中文乱码解决

    问题如下: 在vim中编辑一个中文文本时 出现中文乱码情况 问题解决: 修改vimrc的脚本配置 编辑~/.vimrc文件,加上如下几行即可: set fileencodings=utf-8,ucs- ...

  6. Linux提权之利用 /etc/passwd 文件

    当我们获得了某个Linux服务器的低权限之后,我们想要对该低权限账号进行提权,以执行更多的操作. 接下来我们的提权是利用 /etc/passwd 文件的可写入权限,导致我们写入一个其他用户进去. 首先 ...

  7. php 获取某年后的日期

    比如两年后:date('Y-m-d',strtotime('+2 year')) 月份year改成month

  8. js--吐血总结最近遇到的变态表单校验---element+原生+jq+easyUI(前端职业生涯见过的最烦的校验)

    最近写了无数各种形式的表单,记录下奇奇怪怪的校验规则~ 一:首先是element自带的rules校验规则: element作为常用框架,自带rules属性简单易懂,官方文档一目了然,不再赘述,应付常用 ...

  9. 2021ArchSummit全球架构师峰会上,大家在聊些什么

    大会PPT公开下载链接:https://ppt.infoq.cn/list/assh2021 大会主要情况介绍 2021 ArchSummit全球架构师峰会是该大会正式成立的第十年,是极客邦科技旗下I ...

  10. VS2019解决X64无法内联汇编的问题

    策略:VC编译器x64平台不支持内联汇编,我们利用在Source文件中直接添加asm文件,直接在asm文件中写汇编代码,然后将asm文件编译为OBJ文件.然后就可以在c++文件中声明asm文件中的函数 ...