异步应用程序编排器

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如何在sqlite数据库中保存特定列的历史记录   java如何更改/更新timeseriechart名称(JFreeChart)   java如何将整数转换为可绘制的   汇编什么解释Java的字节码   java查找已编译的类版本号   我应该什么时候在ColdFusion应用程序中使用Java?   java当一个实体的两个字段为(unique=true)时,如何处理JPA异常?   java为什么在所有其他实例都正确的情况下返回错误的布尔值?   java Hibernate每次都准备语句   java停留在平均字长上   对Java和日语字符进行编码   java如何将导致异常的方法的错误消息传递给侦听器中的onTestFailure方法   java代码没有打印结果   java为什么私有内部接口的方法必须是公共的?   休眠发生错误。有关详细信息,请参阅错误日志。JAVAlang.NullPointerException