AsynceHTTPClient不是非阻塞客户机?你知道吗
当我使用请求获取响应时,它工作。但是当我使用asyncttttpclient发布请求时,它不起作用。你知道吗
async def go():
print('go---------------')
client = AsyncHTTPClient()
request = HTTPRequest(url='http://127.0.0.1:8001/api',
method='GET',)
r = await client.fetch(request)
print(r.code, r.body)
async def m(r):
for _ in range(r):
await go()
loop = asyncio.get_event_loop()
loop.run_until_complete(m(100))
当我使用AsyncHTTPClient时,我认为结果如下
走——走——走——走——走。。。。。。你知道吗
但真正的结果是
前进--200 b''前进--200 b''。。。。。。。你知道吗
我想要一个非阻塞的请求,所以它可能会先发送所有100个请求,然后再接收响应,但是每次响应之后我都会得到每个响应。它不是非阻塞模式 我的代码有问题吗?我该怎么办?你知道吗
200是你的状态码。就像是
go - r.status_code b'' go - r.status_code b'' .......
当您从打印中删除您的状态码时,应该是正在打印
go - go - go - go - ......
您看到的是在这种情况下使用协同程序的一个缺点。因为即使请求是非阻塞的,它们也不是真正的异步的。你知道吗
您可以使用^{} 一次发送所有请求,真正地异步发送。你知道吗
正如文件所说:
它完全符合您的用例。你知道吗
gen.WaitIterator
将任意数量的期货作为参数,并在期货结束时生成期货。你知道吗但是,要使其工作,您需要将
for
循环移动到go
协同程序中。示例:顺便说一句,还有另一种方法可以通过回调来实现这一点。然而,
WaitIterator
应该优先于回调。如果你感兴趣的话,我前一段时间写了一篇blog post关于这个的文章。你知道吗相关问题 更多 >
编程相关推荐