python-3.x - 如何在 python 中使用 asyncio 来避免回调地狱
问题描述
我有以下情况。
我有 3 个服务JobInitiator
,它们以下列方式相互交谈Mediator
。Executor
JobInitiator
每 X 分钟一次将请求的作业发布到队列 (RabbitMQ )- 该
Executor
服务每 Y 分钟向该服务发送一个 REST API 调用,Mediator
并询问是否有任何工作要完成。如果是这样 -Mediator
从队列中拉出一条消息并在响应中将消息返回给Executor
服务。 - 完成
Executor
作业执行后 - 他将作业结果Mediator
发布到服务中的 API,该 API 将其发布到JobInitiator
监听的队列。
旁注+限制和限制:
- 该
Mediator
服务只是我队列的 REST API 包装器。主要问题是Executor
不能公开访问服务 - 只允许传出 api 调用。 - 我无法将队列直接从服务连接
JobInitiator
到Executor
服务
到目前为止 - 这个过程并没有什么特别之处。我想知道的是是否可以在 python 中用 asyncio 编写它,所以我不会处理回调地狱。像这样的东西(伪代码)
class JobInitiator(object):
def do_job():
token = await get_token()
applicative_results = await get_results(token=token)
whereget_token()
和get_results()
都经过上述过程。
解决方案
推荐阅读
- javascript - Swiper.js Carousel 如何用鼠标中键同时控制多个轮播
- python - 为什么 Scrapy CrawlerProcess 将控制权交给它之前的行,导致它和上一行运行 2-3 次?
- javascript - 在 MVC 应用程序中使用相同的 js 文件提供两个不同的功能(请不要使用 **Jquery** 解决方案)
- r - 将表中的列变量从数字年份转换为日期年份 (01-01-2021)
- vue.js - Vue3 在服务器上获取触发 CORS 策略,但在使用 PHP CURL 或 ReqBin 时不会
- java - 从 JSON 数组中获取子键和值:Java
- firebase - 当我从控制台向文档添加字段时,Flutter Firestore 没有提供更新的数据
- python - 如何使用 for 循环检查数字是否为素数?(Python)
- reactjs - Rollup:输出有很多随机文件,如何防止它们生成?
- html - 如何修复 HTML 中的按钮位置?