热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

celery3

结合django的定时任务应用场景:1、异步执行,如耗时任务;2、定时任务broker:redis执行任务:

结合django的定时任务  

应用场景:

  1、异步执行,如耗时任务;

  2、定时任务

broker:redis

执行任务:worker

 

celery_pro目录:

  celeryf.py  __init__.py  config.py  tasks1.py  tasks2.py

 

celeryf.py

from __future__ import absolute_import,unicode_literals
from celery import Celeryapp = Celery(main='mycelery', #主模块名broker='redis://:lyb@localhost:6379/0', #消息代理backend='redis://:lyb@localhost:6379/0', #结果存储include=['celery_pro.tasks1','celery_pro.tasks2'], #定义worker的文件,不含.py
)app.config_from_object(
'celery_pro.config') #读取配置文件,可以是导入的模块,也可以是点分隔的文件字符串表示if __name__ == '__main__':app.start()

__init__.py  #空

config.py  #http://docs.celeryproject.org/en/latest/userguide/configuration.html

import os
from datetime import timedelta
from celery.schedules import crontabBASE_DIR = os.path.abspath('')
# PATH_TEST
= 'path_test'CELERY_ENABLE_UTC = False # 不是用UTC
CELERY_TIMEZONE
= 'Asia/Shanghai'CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任务结果的时效时间
# CELERYD_LOG_FILE
= BASE_DIR + "/log/celery/celery.log" # log路径
# CELERYBEAT_LOG_FILE
= BASE_DIR + "/log/celery/beat.log" # beat log路径
# CELERY_ACCEPT_CONTENT
= ['pickle', 'json', 'msgpack', 'yaml'] # 允许接受的格式 一般采用msgpack(快)和json(跨平台)
# CELERY_RESULT_SERIALIZER
= 'json' # 读取任务结果格式
# CELERY_TASK_SERIALIZER
= 'msgpack' # 任务序列化反序列化采用msgpackCELERYBEAT_SCHEDULE = {'add-every-30-seconds': {'task': 'celery_pro.tasks2.add_2','schedule': 30.0,'args': (16, 16)},'add-every-10-seconds': {'task': 'celery_pro.tasks1.test','schedule': 10.0,'args': ['nihao']},# Executes every Monday morning at 7:30 a.m.'add-every-monday-morning': {'task': 'celery_pro.tasks2.add_2','schedule': crontab(day_of_week='monday'),'args': (16, 16),},
}

 

 

tasks1.py

from __future__ import absolute_import,unicode_literals
from celery.schedules import crontab
from .celeryf import app#1、第一种形式
# @app.on_after_configure.connect
# def setup_periodic_tasks(sender,
**kwargs):
# # Calls test(
'hello') every 10 seconds.
# sender.add_periodic_task(
10.0, test.s('hello'), name='add every 10')
#
# # Calls test(
'world') every 30 seconds
# sender.add_periodic_task(
30.0, test.s('world'), expires=10)
#
# # Executes every Monday morning at
7:30 a.m.
# sender.add_periodic_task(
# crontab(hour
=7, minute=30, day_of_week=1),
# test.s(
'Happy Mondays!'),
# )#
2、第二种形式
# app.conf.beat_schedule
= {# 'add-every-30-seconds': {# 'task': 'celery_pro.tasks2.add_2',# 'schedule': 30.0,# 'args': (16, 16)# },# 'add-every-10-seconds': {# 'task': 'celery_pro.tasks1.test',# 'schedule': 10.0,# 'args': ['nihao']# },# # Executes every Monday morning at 7:30 a.m.# 'add-every-monday-morning': {# 'task': 'celery_pro.tasks2.add_2',# 'schedule': crontab(),# 'args': (16, 16),# },
# }@app.task
def test(arg):print(arg)

tasks2.py

from __future__ import unicode_literals,absolute_import
from .celery import app
import time@app.task
def add_2(x,y):print(
'x + y :')return x+y@app.task
def mul(x,y):time.sleep(
20)return time.time()

启动worker:

(venv) l@l:~/myfile/pycharm/py3$ python celery_pro/celeryf.py worker -l debug

启动celery beat即调度器:

celery -A celery_pro.tasks1 beat -l debug

 


转载于:https://www.cnblogs.com/lybpy/p/8698904.html


推荐阅读
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • springboot项目引入jquery浏览器报404错误的解决办法
    本文介绍了在springboot项目中引入jquery时,可能会出现浏览器报404错误的问题,并提供了解决办法。问题可能是由于将jquery.js文件复制粘贴到错误的目录导致的,解决办法是将文件复制粘贴到正确的目录下。如果问题仍然存在,可能是其他原因导致的。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • 1简介本文结合数字信号处理课程和Matlab程序设计课程的相关知识,给出了基于Matlab的音乐播放器的总体设计方案,介绍了播放器主要模块的功能,设计与实现方法.我们将该设 ... [详细]
  • SoIhavealoopthatrunsperfectforeventsandonlyshowsfutureposts.TheissueisthatIwould ... [详细]
  • 最近这段时间用了下RestTemplate这个类,抽点时间总结下一些东西,希望对大家有所帮助。从3.0版本开始,Spring提供了RestTemplate作为用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。本篇文章将从RestTemplate提供的API入手,先来了解下RestTemplate的具体使用,然后再对其中涉及 ... [详细]
  • Fixes/redwoodjs/redwood/#55Thegooglesaidtodothis:https://webpack.js.org/co ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
author-avatar
馨海之洋_895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有