博客
关于我
Python Celery:自动化测试平台定时任务必备的三方库
阅读量:796 次
发布时间:2023-03-05

本文共 2638 字,大约阅读时间需要 8 分钟。

使用 Celery 实现定时任务调度

一、背景

在 Python 的众多优秀库中,Celery 是一个强大的分布式任务队列框架。它能够帮助开发者轻松在后台异步执行任务,特别适用于需要在特定时间或间隔内运行的任务,如定时发送邮件、定期数据处理等。

在自动化测试平台中,Celery 也是一环必不可少的工具,常用于实现定时运行自动化测试任务。本文将向你展示如何创建一个简单的 Celery Demo,帮助理解如何在测试平台中使用 Celery 完成定时任务的调度。


二、环境准备

2.1 新建 PyCharm 项目

  • 打开 PyCharm,选择文件菜单,点击新建项目。
  • 项目名称填写 celery_test
  • 选择 Python 版本并点击下一步。

  • 2.2 安装依赖

    在 PyCharm 的终端窗口中运行以下命令安装 Celery 和 Redis:

    pip install celery redis

    2.3 启动 Redis

    在 PyCharm 的终端窗口中运行以下命令启动 Redis:

    redis-server

    三、创建 Celery 项目

    3.1 创建 tasks.py

    在项目文件夹中创建 tasks.py 文件,内容如下:

    from celery import Celeryimport timeapp = Celery('tasks',    broker='redis://localhost:6379/0',    backend='redis://localhost:6379/0')@app.taskdef add(x, y):    time.sleep(5)  # 模拟长时间运行的任务    return x + y

    3.2 创建 main.py

    在同一目录下创建 main.py 文件,内容如下:

    from tasks import addif __name__ == '__main__':    result = add.delay(4, 6)  # 异步调用任务    print('Task submitted!')        # 等待任务完成并获取结果    print('Result:', result.get(timeout=10))

    四、运行 Celery Worker

    在 PyCharm 中新开一个终端窗口,运行以下命令启动 Celery worker:

    celery -A tasks worker -l info -P eventlet

    五、运行主程序

    在 PyCharm 中新开一个终端窗口,运行以下命令执行主程序:

    python main.py

    注意事项

  • 错误处理:在 Windows 上运行 Celery 时可能会出现错误。安装 eventlet 扩展可以解决部分问题:

    pip install eventlet
  • 配置命令:启动 worker 时请确保使用 -P eventlet 参数。


  • 六、定时任务调度

    7.1 创建定时任务

    tasks.py 中添加定时任务:

    @app.taskdef scheduled_task():    print("Scheduled task executed!")

    7.2 创建调度配置

    创建 celerybeat_schedule.py 文件,内容如下:

    from tasks import appfrom celery.schedules import crontabapp.conf.beat_schedule = {    'execute-every-10-seconds': {        'task': 'tasks.scheduled_task',        'schedule': 10.0,    },}

    7.3 启动 Celery Beat

    在终端窗口中运行以下命令启动 Celery Beat:

    celery -A celerybeat_schedule beat -l info

    八、每天指定时间任务

    8.1 定义每天指定时间的任务

    tasks.py 中添加以下任务:

    @app.taskdef daily_task():    print("Daily task executed at 14:30!")

    8.2 修改调度配置

    更新 celerybeat_schedule.py 文件:

    from tasks import appfrom celery.schedules import crontabapp.conf.timezone = 'Asia/Shanghai'  # 设置时区app.conf.enable_utc = False  # 禁用 UTC 时区app.conf.beat_schedule = {    'execute-every-10-seconds': {        'task': 'tasks.scheduled_task',        'schedule': 10.0,    },    'execute-daily-at-14-30pm': {        'task': 'tasks.daily_task',        'schedule': crontab(hour=14, minute=30),    },}

    8.3 启动服务

    重新启动 Celery worker 和 Beat:

    celery -A tasks worker -l info -P eventletcelery -A celerybeat_schedule beat -l info

    九、crontab 表达式说明

    • crontab 表达式支持以下参数:

      • minute:分钟(0-59 或字符串模式)
      • hour:小时(0-23 或字符串模式)
      • day_of_week:周几(0-6 或字符串模式)
      • day_of_month:月份的第几天(1-31 或字符串模式)
      • month_of_year:一年的第几个月(1-12 或字符串模式)
    • 常用示例

      • 每 10 秒执行一次:
        crontab(minute=0, hour=0, day_of_week=0)
      • 每天 14:30 执行一次:
        crontab(hour=14, minute=30)

    通过以上配置,你可以轻松实现定时任务调度。希望这篇文章能为你提供帮助!

    转载地址:http://avafk.baihongyu.com/

    你可能感兴趣的文章
    PublicCMS怎么用金蝶Apusic Application Server部署
    查看>>
    publish over ssh、 Kubernetes Continuous Deploy插件
    查看>>
    PubMed详解-ChatGPT4o作答
    查看>>
    Pubsub Extensions for Smack
    查看>>
    pulsar mq 单体验证demo, docker启动pulsar mq验证生产者消费者命令
    查看>>
    pulsar mq 学习使用,pulsar java客户端, spring boot pulsar , spring pulsarTemplate如何使用 pulsar4.0.0
    查看>>
    Pulsar mq 设置延迟消息模式 pulsar mq 发送延迟消息 pulsar如何发送消费延时消息
    查看>>
    Pulsar 游标回滚,移动偏移量测试
    查看>>
    pulsar开源消息队列_了解Pulsar---Pulsar工作笔记001
    查看>>
    Puppet 在大规模分布式系统中的性能优化策略有哪些?
    查看>>
    puppet 学习总结(1)——puppet 入门详解
    查看>>
    puppet 集中化管理PDF by 守住
    查看>>
    Puppet---自动化运维工具(进阶)
    查看>>
    puppeteer(三)常用API
    查看>>
    PyTorch 微调终极指南:第 2 部分 — 提高模型准确性
    查看>>
    pure css做的手机页面
    查看>>
    PureMVC--一款多平台MVC框架
    查看>>
    pure框架
    查看>>
    putty、Xshell、远程连接、密钥登录
    查看>>
    Putty建立SSH隧道代理上网
    查看>>