使用定时任务定时执行

启动定时任务命令

1
2
在和manage.py文件同级目录下:
celery -A mydjango beat -l info

注意:

1
2
3
4
启动定时任务需要启动三个服务
1.django后台服务:python manage.py runserver
2.selery后台服务:celery worker -A mydjango -l info -P eventlet
3.定时任务服务:celery -A mydjango beat -l info

启动定时任务出现错误

定时任务错误

1
2
ERROR: Pidfile (celerybeat.pid) already exists.
Seems we're already running? (pid: 29396)

这个错误就是说启动服务的文件夹里有启动文件celerybeat.pid了,把他删掉就可以了,记得再次重启

在settings中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
#定时任务
#导入celery定时模块
from celery.schedules import crontab
#导入时间模块
from datetime import timedelta

CELERY_BEAT_SCHEDULE = {
#定义定时任务
'celery_work':{
'task':'myapp.tasks.async_test', #任务名称,解析字符串寻找
'schedule':timedelta(seconds=7200) #定时时长
}
}

定时任务

结合Django使用一个小案例:每1分钟提交一次log文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
在settings配置
#定时任务
#导入celery定时模块
from celery.schedules import crontab
#导入时间模块
from datetime import timedelta

CELERY_BEAT_SCHEDULE = {
#定义定时任务
'celery_work':{
'task':'myapp.tasks.async_test', #任务名称
'schedule':timedelta(seconds=60) #定时时长,,1分钟
}
}

创建一个task.py文件
from celery.task import task
#自定义异步任务
@task
def async_test():
print('异步任务')
#文件名
filename = 'celeray.log'
#追加形式写入
with open(filename,'a') as f:
#写入文件时间
f.write(str(datetime.datetime.now())+'\n')
return '123123'

定时启动
log文件记录时间

评论





载入天数...载入时分秒...

Blog content follows the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) License

Use WZH as theme, total visits times