异步应用程序编排器

AIOConductor的Python项目详细描述


这是一个小图书馆, 解决单一任务: 异步应用程序的编排。

例如, 我们有申请, 包括数据库, 消息队列, 网络API, 以及背景工作人员。 数据库和消息队列是独立的, 它们可以同时发射。 web api和后台工作程序也相互独立。 但它们都依赖于数据库和消息队列。 所以它们应该在数据库和消息队列之前启动和停止。

这就是使用aioconductor解决这个问题的方法。

fromaioconductorimportConductor,ComponentclassDatabase(Component):asyncdefsetup(self):""" Setup database """asyncdefshutdown(self):""" Shutdown database """classMessageQueue(Component):asyncdefsetup(self):""" Setup message queue """asyncdefshutdown(self):""" Shutdown message queue """classWebAPI(Component):db:Database# Dependencies are declared by type annotations.queue:MessageQueue# Real instances of the components will be injected# during setup routine.asyncdefsetup(self):""" Setup web API """asyncdefshutdown(self):""" Shutdown web API """classBackgroundWorkers(Component):db:Databasequeue:MessageQueueasyncdefsetup(self):""" Setup background workers """asyncdefshutdown(self):""" Shutdown background workers """conductor=Conductor(config={})conductor.add(WebAPI)conductor.add(BackgroundWorkers)conductor.serve()

上面的代码将运行DatabaseMessageQueue的并发设置, 然后并发设置WebAPIBackgroundWorkers。 关机将按相反的顺序运行。

conductor还提供了通过替代实现修补组件的能力。 它可以用于测试。

classMessageQueueMock(Component):asyncdefsetup(self):""" Setup message queue mock """asyncdefshutdown(self):""" Shutdown message queue mock """conductor=Conductor(config={})conductor.patch(MessageQueue,MessageQueueMock)# An instance of ``MessageQueueMock`` will be injected into# ``WebAPI`` and ``BackgroundWorkers``, instead of ``MessageQueue``.conductor.add(WebAPI)conductor.add(BackgroundWorkers)conductor.serve()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?