gpt4 book ai didi

django - 从信号调用 celery 任务

转载 作者:行者123 更新时间:2023-12-01 03:33:44 25 4
gpt4 key购买 nike

我需要在用户注册后从多个公共(public) API 导入数据。 django-allauth 包含在内,我已经注册了一个信号处理程序以在 allaut 发出 user_signed_up 后调用正确的方法.
因为数据导入需要很多时间,并且请求被信号阻塞,所以我想使用 celery 来完成工作。

我的测试任务:

@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 数据库,但在生产中将使用 redis

最佳答案

解决方案是切换 CELERY_ALWAYS_EAGER = TrueFalse在 local.py 中。我在 cookiecutter-django 的 Gitter channel 中被指出了该解决方案。

上面提到的调用已经正确。

关于django - 从信号调用 celery 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36363152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com