当前位置: 首页 > 面试题库 >

用Celery创建动态队列

逑衡
2023-03-14
问题内容

这是我的情况:

当用户登录到我的网站时,我为给定的用户排队执行一系列任务(通常每个任务花费100毫秒的时间,每个用户有100毫秒的任务)。这些任务排队到默认的Celery队列中,而我有100的工人正在运行。我使用websockets在后端完成任务时向用户显示实时进度。如果我只有1个或2个用户处于活动状态,那么生活会很好。

现在,如果我有几个并发用户登录到我的站点,则后一个用户将排在初始用户之后,并且他们的任务将挨饿(因为所有任务都进入同一队列)。我的想法是为每个用户创建一个动态队列以确保公平。但是,根据Celery文档(http://docs.celeryproject.org/en/latest/userguide/routing.html#defining-queues),似乎我需要静态定义队列。

关于在我的场景中使用celery的最佳做法有什么建议吗?


问题答案:
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=['worker1@example.com'])


 类似资料:
  • 我有一个rabbitListener,它连续异步地侦听队列“用户消息”的用户消息。除非队列中加载了大量消息,否则一切都正常。当消息批量发布到队列时,同一用户的消息首先被处理,从而其他用户的消息等待轮到他们。 我无法使用优先级队列,因为所有用户的优先级都相同。所以我想创建新的队列,并在运行时监听它们。一旦消息被使用,所有队列都将是短暂的。(队列将被删除) 在浏览时,我发现可以使用RabbitAdmi

  • 我正在开发消息推送给订阅特定事件的所有用户子集。用户订阅RabbitMQ中的主题,格式为:user-id.event-type.id.我使用Spring WebSockJS、Stomp、RabbitMQ以及前端SockJS和Angular JS。用户应该被通知关于事件的所有行动(评论等,日期更改)。 到目前为止,我们拥有的: 首先,我通过REST webservice终结点进行身份验证,并将令牌放

  • 问题内容: 你好,我有这个设置 我需要为每个按钮获取以下内容 在Java中是否可以为我声明的每个按钮动态创建此按钮?因为当我有5个按钮时,我不需要3x5 = 15行代码,而是只有几行具有动态创建的按钮。 问题答案: 编写一个小循环并将您的按钮存储在数组中:

  • 你好,我已经准备好了 我需要为每个按钮获得以下内容 在Java中,是否可以为我声明的每个按钮动态创建它?因为当我有5个按钮时,我不希望3x5=15行代码,而只希望有几行动态创建的按钮。

  • 问题内容: 我试图找到有关此信息,但空手而归: 我认为可以使用反射或代理在Java中动态创建类,但我不知道如何做。我正在实现一个简单的数据库框架,在其中使用反射创建SQL查询。该方法获取具有数据库字段作为参数的对象,并基于该对象创建查询。但是,如果我还可以动态创建对象本身,那将非常有用,这样我就不必为每个表都拥有一个简单的数据包装对象。 动态类只需要简单的字段(,,),例如 这可能吗,我该怎么做?

  • 因为类也是对象,所以我们可以在程序运行的时候创建类。 Python 是动态语言。 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。 在之前,我们先了了解下 type() 函数。 首先我们新建一个 hello.py 的模块,然后定义一个 Hello 的 class , class Hello(object): def hello(self, name