celery 定时任务demo

2024-06-10 20:32
文章标签 定时 任务 demo celery

本文主要是介绍celery 定时任务demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录结构:

celery_schedule_demo
├── __init__.py
├── celery_server.py
└── celery_task.py

 

 celery_server.py

# -*- coding: utf-8 -*-
from celery import Celerymyapp = Celery('schedule')
myapp.conf.broker_url = 'redis://localhost:6379/0'
myapp.conf.result_backend = 'redis://localhost:6379/1'
myapp.conf.imports = ['celery_task']
myapp.conf.worker_concurrency = 1myapp.conf.beat_schedule = {# 5秒执行一次demo_schedule任务'every-5s': {'task': 'demo_schedule',# 'schedule': crontab(),'schedule': 5.0,}
}

celery_task.py

# -*- coding: utf-8 -*-
from celery_server import myapp@myapp.task(name='demo_schedule')
def demo():print('demo' * 10)return 'demo'
if __name__ == '__main__':demo.delay()

celery_schedule_demo目录下启动beat

 celery -A celery_server.myapp beat -l debug

输出:

celery beat v4.4.7 (cliffs) is starting.
__    -    ... __   -        _
LocalTime -> 2021-01-05 00:33:23
Configuration ->. broker -> redis://localhost:6379/0. loader -> celery.loaders.app.AppLoader. scheduler -> celery.beat.PersistentScheduler. db -> celerybeat-schedule. logfile -> [stderr]@%DEBUG. maxinterval -> 5.00 minutes (300s)
[2021-01-05 00:33:23,769: DEBUG/MainProcess] Setting default socket timeout to 30
[2021-01-05 00:33:23,769: INFO/MainProcess] beat: Starting...
[2021-01-05 00:33:23,775: DEBUG/MainProcess] Current schedule:
<ScheduleEntry: every-5s demo_schedule() <freq: 5.00 seconds>
[2021-01-05 00:33:23,775: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2021-01-05 00:33:23,787: INFO/MainProcess] Scheduler: Sending due task every-5s (demo_schedule)
[2021-01-05 00:33:23,799: DEBUG/MainProcess] beat: Synchronizing schedule...
[2021-01-05 00:33:23,800: DEBUG/MainProcess] demo_schedule sent. id->9c8d08b4-9f4f-4799-9446-d4680cb198cc
[2021-01-05 00:33:23,800: DEBUG/MainProcess] beat: Waking up in 4.97 seconds

 

然后再开一个终端启动 worker

 celery -A celery_server.myapp worker -l

 输出:

 -------------- celery@bogon v4.4.7 (cliffs)
--- ***** ----- 
-- ******* ---- Darwin-19.5.0-x86_64-i386-64bit 2021-01-05 00:35:15
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         schedule:0x1065b90f0
- ** ---------- .> transport:   redis://localhost:6379/0
- ** ---------- .> results:     redis://localhost:6379/1
- *** --- * --- .> concurrency: 1 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- -------------- [queues].> celery           exchange=celery(direct) key=celery[2021-01-05 00:35:18,180: WARNING/ForkPoolWorker-1] demodemodemodemodemodemodemodemodemodemo
[2021-01-05 00:35:23,141: WARNING/ForkPoolWorker-1] demodemodemodemodemodemodemodemodemodemo
[2021-01-05 00:35:28,142: WARNING/ForkPoolWorker-1] demodemodemodemodemodemodemodemodemodemo
[2021-01-05 00:35:33,140: WARNING/ForkPoolWorker-1] demodemodemodemodemodemodemodemodemodemo

可以看到5秒钟打印一次demodemodemodemodemodemodemodemodemodemo

说明定制任务成功。

这篇关于celery 定时任务demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049189

相关文章

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定