我需要在注册后为用户从几个公共API导入数据.包括
django-allauth,我已经注册了一个信号处理程序,在allaut发出user_signed_up之后调用正确的方法.
因为数据导入需要很长时间并且请求被信号阻止,所以我想使用芹菜来完成工作.
我的测试任务:
@app.task()
def test_task(username):
print('##########################Foo#################')
sleep(40)
print('##########################' + username + '#################')
sleep(20)
print('##########################Bar#################')
return 3
我正在调用这样的任务:
from game_studies_platform.taskapp.celery import test_task
@receiver(user_signed_up)
def on_user_signed_in(sender, request, *args, **kwargs):
test_task.apply_async('John Doe')
应将任务放入队列,并立即执行请求.但它被封锁了,我得等一下.
该项目设置为https://github.com/pydanny/cookiecutter-django,我在docker容器中运行它.
Celery被配置为在开发中使用django数据库,但将在生产中重新使用
最佳答案 解决方案是在local.py中将CELERY_ALWAYS_EAGER = True切换为False.我在cookiecutter-django的Gitter频道中指出了这个解决方案.
上面提到的电话已经正确.