【发布时间】:2019-10-30 16:40:59
【问题描述】:
我是 Python 新手,我想使用 Python 将异步 HTTP 请求发送到 cosmos DB 以执行批量插入操作。我尝试将多线程与 asyncio 一起使用来完成此任务。它已经给了我很好的性能,但我相信它肯定可以进一步改进,这里是代码:
try:
loop = asyncio.new_event_loop()
return loop.run_until_complete(save(request.json))
except ValidationException as e:
return send_error(e)
async def save(self, users):
with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
loop = asyncio.get_event_loop()
futures = [
loop.run_in_executor(
executor,
self.__save_to_cosmos,
user
)
for user in users
]
result = await asyncio.gather(*futures)
return result
请注意,“__save_to_cosmos”方法是使用 python SDK 及其同步代码向 Cosmos DB 发送 HTTP 请求,因为据我所知 Cosmos DB SDK 不支持异步操作。
谁能建议是否有更好的方法来完成这项任务?
【问题讨论】:
-
嗨,现在有更新吗?
标签: python python-3.x azure-cosmosdb