python – Celery-Django:无法异步执行任务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Celery-Django:无法异步执行任务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1575字,纯文字阅读大概需要3分钟。
内容图文
![python – Celery-Django:无法异步执行任务](/upload/InfoBanner/zyjiaocheng/808/1433f4844442474e9355e78090b27788.jpg)
我正在尝试在用户浏览我的网站时在后台运行一些任务,但每当我使用Celery调用一个函数时,它似乎是同步执行而不是异步执行.
例如,当我调用function.delay()时,整个站点都会挂起,直到function.delay()返回.以类似方式调用函数的其他方法(apply_async,subtasks)表现出相同的问题.
我猜Django或Celery中的东西配置错误,但我不知道它是什么.
settings.py中的芹菜配置:
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
您明确要求芹菜同步执行任务.它总是等待结果.
此设置对于编写单元测试等很有用.
阅读http://ask.github.com/celery/configuration.html
内容总结
以上是互联网集市为您收集整理的python – Celery-Django:无法异步执行任务全部内容,希望文章能够帮你解决python – Celery-Django:无法异步执行任务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。