1.celery
分布式任务队列,可让任务执行完全脱离主程序,还可以分配到其他主机上运行。可分为异步和定时任务—异步任务—定时任务通过消息传递任务,通过Broker协调client(任务发出者)和worker(任务处理者)clients发出消息->消息队列->broker将消息分发给worker来处理。Borker:两种—redis—rabbitMQ#django项目配置borkerCELERY_BROKER_URL = "redis://127.0.0.1:6379/0”#配置celery时区CELERY_TIMEZONE = TIME_ZONE# 支持数据库django-db和缓存django-cache存储任务状态及结果CELERY_RESULT_BACKEND = "django-db”# 为任务设置超时时间,单位秒。超时即中止,执行下个任务。CELERY_TASK_TIME_LIMIT = 5# 任务限流CELERY_TASK_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}# Worker并发数量,一般默认CPU核数,可以不设置CELERY_WORKER_CONCURRENCY = 2# 每个worker执行了多少任务就会死掉,默认是无限的CELERY_WORKER_MAX_TASKS_PER_CHILD = 200异步任务async task 和 定时任务crontabworker 执行任务处理单元,获取队列中的任务执行
2.beat
python manage.py celery beat
#启动beat,定时任务给worker分发任务的
3.worker
python manage.py celery worker -c 6
# Linux下测试,启动Celery
Celery -A myproject worker -l info
#启动worker
#worker工作进程,可执行定时与异步任务
4. flower
#flower监控和管理celery(监控celery运行任务的状态)
pip install flower
#启动flower
flower —-port=5555
#参看tasks API
http://127.0.0.1:5555/api/tasks
5. 异步任务调用
--delay
—apply_async方法
#delay方法
task_name.delay(args1, args2, kwargs=value_1, kwargs2=value_2)
#apply_async方法,与delay类似,但支持更多参数
task_name.apply_async(args=[arg1, arg2], kwargs={key:value, key:value})
6. 定时任务配置
crontab() 每分
crontab(minute=0, hour=0) 每天午夜
crontab(minute=0, hour='*/3') 能被3整除的小时数,3,6,9点等等
crontab(minute=0,``hour='0,3,6,9,12,15,18,21') 与前面相同,指定小时
crontab(minute='*/15') 每15分钟
crontab(day_of_week='sunday') 星期日每分钟
crontab(minute='*',``hour='*', day_of_week='sun') 同上
crontab(minute=0, hour='*/2,*/3') 可以被2或3整除的小时数,除了 1am, 5am, 7am, 11am, 1pm, 5pm, 7pm, 11pm
crontab(minute=0, hour='*/5') 可以被5整除的小时
crontab(minute=0, hour='*/3,8-17') 8am-5pm之间可以被3整除的小时
crontab(0, 0, day_of_month='2') 每个月的第2天
crontab(0, 0,``day_of_month='2-30/2') 每月的偶数日
crontab(0, 0,``day_of_month='1-7,15-21') 每月的第一和第三周
crontab(0, 0, day_of_month='11',``month_of_year='5') 每年的5月11日
crontab(0, 0,``month_of_year='*/3') 每个季度首个月份每天
7. celery查询
#清除任务队列中所有消息python manage.py celery purge#清除某些队列中消息python manage.py celery purge -Q 队列名#查看所有激活的任务python manage.py celery inspect active#查看计划任务python manage.py celery inspect scheduled#列出保留任务列表python manage.py celery inspect reserved#列出已撤销任务历史记录python manage.py celery inspect revoked#列出激活的节点python manage.py celery status#列出worker的统计信息python manage.py celery inspect stats