问题描述
我正在学习Django celery,并且尝试使用Django celery运行计划的任务。为此,我编写了一个创建以下多个用户的任务:
@shared_task
def create_random_user(total):
for i in range(total):
username = 'user_{}'.format(get_random_string(10,string.ascii_letters))
email = '{}@example.com'.format(username)
password = get_random_string(50)
User.objects.create_user(username=username,email=email,password=password)
return '{} random users created with success!'.format(total)
,当我点击以下django视图的页面时,任务正在运行:
def create(request):
create_random_user.delay(10)
return render(request,'test.html')
以上所有方法都运行良好,但我不喜欢这种方式来访问页面并创建用户。
我不知道该怎么办。
有人可以帮我吗?
注意:我的celery设置运行良好,但是我没有获得与celery一起执行计划任务的过程。
在这种情况下,有人可以帮助我吗?
解决方法
您需要使用 Celery beat 安排任务。确保先阅读它。但是只是为了给您一个概览,您必须使用
myapp / tasks.py
from celery.decorators import periodic_task
from celery.task.schedules import crontab
@periodic_task(run_every=(crontab(minute='*/10')),name="my_periodic_task",ignore_result=True)
def my_periodic_func():
pass
尽管您可以通过许多其他方式来安排时间表。只是让您的手变脏就足够了。
以下是一些参考资料: https://docs.celeryproject.org/en/stable/userguide/periodic-tasks.html
为此,我还建议使用自定义调度程序类。它将帮助您从Django管理员本身安排任务。