gpt4 book ai didi

python - celery -Django : Unable to execute tasks asynchronously

转载 作者:太空狗 更新时间:2023-10-30 02:13:35 24 4
gpt4 key购买 nike

我试图在用户浏览我的网站时在后台运行一些任务,但每当我使用 Celery 调用一个函数时,它似乎是同步执行的而不是异步执行的。

例如,当我调用 function.delay() 时,整个站点都会挂起,直到 function.delay() 返回。其他以类似方式调用函数的方法(apply_async、子任务)也存在同样的问题。

我猜 Django 或 Celery 中的某些东西配置错误,但我不知道它是什么。

settings.py中的celery配置:

import djcelery
djcelery.setup_loader()

CELERY_RESULT_BACKEND = "amqp"
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_USER = "test"
BROKER_PASSWORD = "test"
BROKER_VHOST = "testhost"

TEST_RUNNER = "djcelery.contrib.test_runner.run_tests"

CELERY_IMPORTS = ("myapp.tasks",)

BROKER_BACKEND = "memory"
CELERY_ALWAYS_EAGER = True

尝试使用“./manage.py celeryd”启动 Celery 守护进程,我得到以下输出:

[2011-09-23 09:25:38,026: WARNING/MainProcess]  

-------------- celery@iMac.local v2.2.7
---- **** -----
--- * *** * -- [Configuration]
-- * - **** --- . broker: memory://test@localhost:5672/testhost
- ** ---------- . loader: djcelery.loaders.DjangoLoader
- ** ---------- . logfile: [stderr]@WARNING
- ** ---------- . concurrency: 4
- ** ---------- . events: OFF
- *** --- * --- . beat: OFF
-- ******* ----
--- ***** ----- [Queues]
-------------- . celery: exchange:celery (direct) binding:celery


[2011-09-23 09:25:38,035: WARNING/MainProcess] celery@iMac.local has started.

最佳答案

尝试删除

CELERY_ALWAYS_EAGER = True

您明确要求 celery 同步执行任务。它会一直等待结果。此设置对于编写单元测试等很有用。

阅读http://ask.github.com/celery/configuration.html

关于python - celery -Django : Unable to execute tasks asynchronously,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505846/

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