You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Celery Beat:如何手动触发指定的定时任务?

立即触发Celery定时任务的实用方法

如果你已经配置Celery Beat运行定时任务,想要跳过等待周期直接触发指定任务,可以用以下两种方式:

一、通过Celery命令行触发

Celery自带的call命令可直接调用任务,无需等待Beat的调度周期。

  1. 无参数任务的基本用法:
celery -A 你的Celery应用名称 call 任务模块.任务函数名

示例:若任务在tasks.py中名为daily_report_task,Celery应用为my_project.celery,命令如下:

celery -A my_project.celery call tasks.daily_report_task
  1. 带参数的任务:
    若任务需要传参,用--args指定字符串格式的参数元组:
celery -A my_project.celery call tasks.user_notify_task --args='(1001, "系统维护通知")'

二、通过Python解释器触发

直接调用任务的delay()或apply_async()方法,是最直接的触发方式。

进入Python解释器后执行:

# 导入你的Celery应用实例(确保路径正确)
from my_project.celery import app
# 导入要触发的任务函数
from tasks import daily_report_task

# 无参数触发
daily_report_task.delay()

# 带参数触发
daily_report_task.delay(1001, "系统维护通知")

为什么app.add_periodic_task没效果?

app.add_periodic_task的作用是向Celery Beat添加新的定时调度规则,让Beat按周期执行任务,而非触发已存在的任务立即运行。你需要触发的是已配置好的定时任务,直接调用任务本身的执行方法即可。

注意事项

  • 确保在生产环境的Python环境中执行,Celery应用的配置(如broker地址、认证信息)需与生产环境一致,否则任务无法发送到消息队列。
  • 若任务依赖特定环境变量或配置文件,需提前加载对应配置。

内容的提问来源于stack exchange,提问作者Suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:49:55