猿问

异步 Python - 触发并忘记 HTTP 请求

不确定这是否可以实现。我想从脚本触发 HTTP POST 请求,但不等待响应。相反,我想立即返回。


我尝试了一些方法:


#!/usr/bin/env python3


import asyncio

import aiohttp


async def fire():

    await client.post('http://httpresponder.com/xyz')


async def main():

    asyncio.ensure_future(fire())


if __name__ == '__main__':

    loop = asyncio.get_event_loop()

    client = aiohttp.ClientSession(loop=loop)

    loop.run_until_complete(main())

脚本立即返回且没有错误,但 HTTP 请求永远不会到达目的地。我可以触发 POST 请求,但不等待服务器的响应,只是在发送请求的那一刻终止吗?


青春有我
浏览 146回答 2
2回答

慕标琳琳

我已经回答了一个相当类似的问题。async def main():    asyncio.ensure_future(fire())ensure_future 安排 coro 执行,但不等待其完成,run_until_complete也不等待所有期货的完成。这应该解决它:async def main():    await fire()
随时随地看视频慕课网APP

相关分类

Python
我要回答