1、celery周期性任务
简介-----celery beat 是一个调度程序,它定期启动任务,然后由集群中的可用工作节点执行这些任务。
django-celery-beat
celery默认的调度程序是 celery.beat.PersistentScheduler ,它简单地跟踪本地 shelve 数据库文件中的最后一
次运行时间。 Django-celery-beat 扩展,它将时间表存储在Django数据库中,并提供了一个方便的管理界面来在运
行时管理周期性任务。
2、步骤
celery -A apiauto beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
celery -A apiauto beat -l info --scheduler
django_celery_beat.schedulers:DatabaseScheduler
@shared_task
def run_task(pk=None, task_id=None, env_id=None, version=None, **kwargs):
if pk is None:
# 说明是定时执行
test_record = TestRecord.objects.create(
task_id=task_id,
environment_id=env_id,
version=version,
arguments=kwargs,
runner=‘定时执行’
)
# 创建测试报告
Report.objects.create(record=test_record, status=2)
else:
# 异步执行
# 1. 拿到测试记录
test_record = TestRecord.objects.get(pk=pk)
重启worker和beat:
celery -A apiauto worker -l info -P eventlet
celery -A apiauto beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
找到接口,在admin后台添加测试定时任务
添加相应的接口配置,即可执行