Skip to main content

celery-beat执行定时任务

为了检测订单列表中的订单状态是否已经超时,我们可以使用一个定时任务,让它每隔一定时间来进行检测。

配置定时任务

本文介绍了如何使用Django Celery Beat执行定时任务。首先安装django-celery-beat应用并执行迁移操作,然后启动Celery Worker和Celery Beat。Celery Worker负责执行具体的任务,而Celery Beat则负责调度任务的执行时间。

以下是具体的步骤:

1.安装django-celery-beat应用:

pip install django-celery-beat

2.在Django项目的settings.py文件中将django_celery_beat添加到INSTALLED_APPS中:

dx_movie/dx_movie/settings.py
INSTALLED_APPS = [
# other apps...
'django_celery_beat',
]

3.执行迁移操作以创建Celery Beat相关的表:

python manage.py migrate

执行完毕后,数据库中会新增很多和celery-beat相关的表,如下图所示。

图87-新增的celery-beat相关表

4.启动Celery Worker和Celery Beat:

celery -A [项目名称] worker -l info

示例如下:

图87-启动celery-worker

celery -A [项目名称] beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler

示例如下:

图87-启动celery-beat

5.在后台管理界面中配置定时任务:

  • 打开后台管理界面,URL为/admin
  • 周期任务部分添加一个新的周期性任务。
  • 配置任务的名称、任务函数、执行间隔等参数。
  • 保存任务配置。

添加周期性任务,如下图所示。 图87-添加周期性任务

添加时间间隔,如下图所示。 图87-添加时间间隔

如果执行的函数有参数,则需要添加参数,如下图所示。 图87-添加参数

启动flower,检测任务的执行

使用命令启动flower, 命令如下:

celery -A dx_movie flower

如下图:

图87-启动flower

访问flower网址,效果如下图所示。

图87-flower检测定时任务

flower中会检测到每隔5秒执行一次。

小结

以上是使用Django Celery Beat执行定时任务的基本步骤。可以根据实际需求和任务函数的参数设置具体的任务配置,实现定时执行任务的功能。