gpt4 book ai didi

celery - 将 eventlet.corolocal 与 Celery 一起使用

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

有没有人有使用 eventlet.corolocal 的经验,尤其是 celery(为 worker 提供 eventlets)?

如果是这样,您能否阐明以下代码示例的问题所在?

...
from eventlet.corolocal import local

...

ev_local = local()

@app.task
def dummy_task(self, a):
if hasattr(ev_local, a):
ev_local.a += a
else:
ev_local.a = a
print ev_local.a

if __name__ == '__main__':
app.start()

如果我现在启动一个具有并发性的 celery worker,比如 5,

celery multi start 1 -A process_mss -l info -P eventlet -c 5 --verbose

并调用任务 (dummy_task) 20 次 -

...

for i in xrange(20):
dummy_task.delay(1)

我看到 5 个 eventlet 每个处理 4 个任务(使用 id 返回的 eventlet.corolocal.get_ident())。但是,eventlet 总是在不知道变量/属性“a”的情况下找到 ev_local。所以 dummy_task(...) 中的打印语句总是打印 1。

有什么可能出错的提示吗?

最佳答案

这里有个小错别字:
如果 hasattr(ev_local, a):

hasattr 的第二个参数必须是字符串:hasattr(ev_local, 'a')

关于celery - 将 eventlet.corolocal 与 Celery 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707634/

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