Python中使用celery.schedulescrontab()实现定时任务调度
发布时间:2023-12-23 10:31:18
在Python的Celery库中,可以使用celery.schedules.crontab()函数来创建一个定时任务调度。crontab()函数的参数可以接受类似于Linux crontab格式的字符串,来表示定时任务的执行时间。
下面是一个使用celery.schedules.crontab()实现定时任务调度的简单例子:
from celery import Celery
from celery.schedules import crontab
app = Celery('myapp', broker='pyamqp://guest@localhost//')
# 定义一个定时任务
@app.task
def my_task():
print('定时任务执行中...')
# 设置定时任务调度规则
app.conf.beat_schedule = {
'my-task': {
'task': 'myapp.my_task', # 要执行的任务
'schedule': crontab(minute='*/5'), # 每5分钟执行一次
},
}
在上面的例子中,首先需要创建一个Celery实例,然后定义一个定时任务my_task()。接下来,通过app.conf.beat_schedule属性来设置定时任务调度规则。beat_schedule是一个字典,其中的每一个key-value对代表一个定时任务的调度规则。
在本例中,使用了crontab(minute='*/5')来表示每5分钟执行一次定时任务。除了minute参数,crontab()函数还可以接受其他参数,如hour、day_of_week、day_of_month和month_of_year,用于更精确地控制定时任务的执行时间。
最后,确保已经启动Celery的worker和beat进程:
$ celery -A myapp worker --loglevel=info
$ celery -A myapp beat --loglevel=info
运行以上代码后,定时任务将会每隔5分钟执行一次。
除了crontab(),Celery还提供了其他一些用于定时任务调度的函数,如datetime.timedelta()和celery.schedules.schedule()等。
以上就是使用celery.schedules.crontab()实现定时任务调度的一个简单例子。希望对你有所帮助!
