使用定时任务定时执行
启动定时任务命令
1 2 在和manage.py文件同级目录下: celery -A mydjango beat -l info
注意:
1 2 3 4 启动定时任务需要启动三个服务 1. django后台服务:python manage.py runserver2. selery后台服务:celery worker -A mydjango -l info -P eventlet3. 定时任务服务: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 from celery.schedules import crontabfrom datetime import timedeltaCELERY_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配置 from celery.schedules import crontabfrom datetime import timedeltaCELERY_BEAT_SCHEDULE = { 'celery_work' :{ 'task' :'myapp.tasks.async_test' , 'schedule' :timedelta(seconds=60 ) } } 创建一个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'