这是我的场景:
当用户登录我的网站时,我会为给定用户排队一堆任务(通常每个任务需要 100 毫秒,每个用户有 100 多个任务)。这些任务排队到默认的 Celery 队列中,并且我有数百个工作线程正在运行。当任务在后端完成时,我使用 websockets 向用户显示实时进度。如果我只有 1 或 2 个活跃用户,那么生活就很好。
现在,如果我有几个并发用户登录到我的站点,则后面的用户将排在初始用户后面,并且他们的任务会匮乏(因为所有任务都进入同一队列)。我的想法是为每个用户创建一个动态队列以确保公平。然而根据 Celery 文档 (http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues),似乎我需要静态定义队列。
关于在我的场景中使用 celery 的最佳实践有什么建议吗?
http://docs.celeryproject.org/en/latest/userguide/workers.html#queues http://docs.celeryproject.org/en/latest/userguide/workers.html#queues
celery -A proj control add_consumer foo -d worker1.local
可以使用 app.control.add_consumer() 方法动态完成相同的操作:
app.control.add_consumer('foo', reply=True)
[{u'worker1.local': {u'ok': u"already consuming from u'foo'"}}]
app.control.add_consumer('foo', reply=True,
destination=['[email protected] /cdn-cgi/l/email-protection'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)