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

如何将Celery与asyncio结合?

蒋航
2023-03-14
问题内容

如何创建使芹菜任务看起来像的包装器asyncio.Task?还是有更好的方法与Celery集成asyncio

Celery的创建者@asksol这样说:

将Celery用作异步I / O框架之上的分布式层是很常见的(提示:将CPU绑定的任务路由到prefork worker意味着它们不会阻塞事件循环)。

但是我找不到任何专门针对asyncio框架的代码示例。


问题答案:

如官方网站上所述,这可以通过Celery 5.0版实现:

http://docs.celeryproject.org/en/4.0/whatsnew-4.0.html#preface

  1. Celery的下一个主要版本将仅支持Python 3.5,我们计划在其中利用新的asyncio库。
  2. 放弃对Python 2的支持将使我们能够删除大量的兼容性代码,而与Python 3.5一起使用将使我们能够利用键入,异步/等待,异步和类似概念的优势,这是旧版本所无法替代的。

以上是从上一个链接引用的。

因此,最好的办法是等待 发布5.0 版!

同时,快乐的编码:)



 类似资料:
  • 问题内容: 我已经使用Python asyncio和aiohttp成功构建了一个RESTful微服务,该服务可侦听POST事件以收集来自各种供料器的实时事件。 然后,它构建一个内存结构,以将事件的最后24小时缓存在嵌套的defaultdict / deque结构中。 现在,我想定期检查该结构到磁盘的位置,最好使用pickle。 由于内存结构可以大于100MB,因此我希望避免在检查点结构所需的时间上

  • 问题内容: 我的阻塞功能很少,我无法更改(某些我无法控制的内部库。与一个或多个网络服务进行对话)。如何将其用作异步?例如,我将不执行以下操作。 这将是低效的,因为我在等待第一个输入的同时可以调用第二个输入。我如何包装它们以便它们可与asyncio一起使用(即new ,语法)? 让我们假设函数是可重入的。也就是说,如果已经处理过先前的事件,则可以再次调用。 更新资料 使用可重用的装饰器扩展答案。单击

  • 我正在学习使用RxAndroid库的RxJava,同时使用改型来进行联网,并使用RetroLambda来使用Java8 lambdas。 我希望构建的应用程序具有以下功能: 允许用户键入对Wikipedia API的查询 我让它像这样工作: 现在,我想添加一个新的小部件,允许我的维基百科查询使用另一种语言。现在,我将选择一个开关,以“en”或“nl”作为维基百科url的前缀。 所以我从开关中创建了

  • 我正在使用springbootersey进行web restful实现。现在我要将swagger集成到我们的应用程序中。我做了以下操作。 我添加了以下对build.gradle的依赖: 我能够启动这个web应用程序,但我想知道哪个url是用来招摇的?我试过了http://localhost:8080, http://localhost:8080/swagger和http://localhost:8

  • 据我所知,RabbitMQ等消息代理促进了用不同语言/平台编写的不同应用程序之间的通信。因此,由于celery可以使用RabbitMQ作为消息代理,我相信我们可以将任务从任何应用程序排队到celery,即使生产者不是用Python编写的。 现在,我想知道如何通过RabbitMQ将用C编写的应用程序中的任务排队到芹菜。但我还没有找到这样的例子。 我发现的唯一与此相关的信息就是这个问题 其中,公认的答

  • 问题内容: 我正在尝试开发一个JMS 独立应用程序 来读写MQSeries上的Queue。我的老板要求我使用 纯Java JMS (而不是ibm.mq lib)来执行此操作。 这是建立jms连接所需的信息: 您知道该怎么做?还是您有任何链接教我做到这一点。 问题答案: 这里的问题是“我的老板要求我使用纯Java JMS(不是ibm.mq lib)来做到这一点”的要求。JMS是一个规范,每个实现都必