gpt4 book ai didi

python-3.x - 使用 aiohttp.post 我如何将一些数据传递给它以进行迭代

转载 作者:行者123 更新时间:2023-12-05 07:46:59 27 4
gpt4 key购买 nike

根据文档 on aiohttp here:我可以指定一个协程来提供数据,但是当我运行它时(下面的代码示例)它告诉我 TypeError: Only io.IOBase, multidict and (name, file) pairs allowed

我尝试了其他几种方法来完成此操作,但一直遇到麻烦。

我想要实现的是我可以从命名管道中读取(这将有流式音频数据不断传入)。然后我想立即将其流式转发到 Speech To Text API(在本例中为 Watson)。

我的额外要求(重要的一个)是我不能阻止读取文件,因为如果我在该名称管道(想想 unix 套接字)的写入端进行操作,将会阻止该程序并降低声音。

有效的方法是直接将文件句柄传递给异步 http 请求,但我没有机会检查和中断数据。我该怎么做?

#!/usr/bin/env python3

import asyncio
import aiohttp
import io

FILENAME = 'poem.txt'

my_buffer = io.BytesIO()
queue = asyncio.Queue()

with open(FILENAME, 'rb') as fd:
while True:
chunk = fd.read(50)
# do some processing on chunk (read audio level)
if (chunk):
asyncio.ensure_future(queue.put(chunk))
else:
print("we're out of the original file")
my_buffer.write(b'')
break

@asyncio.coroutine
def stream_coroutine():

print("read chunk")
chunk = yield from queue.get()

if (chunk == b''):
print("chunks out!!")
return

yield chunk


async def getPage():
print("queue len", queue.qsize())
await asyncio.sleep(2)
async with aiohttp.ClientSession() as session:
async with session.post('http://requestb.in/zq456szq', data=stream_coroutine) as resp:
print(resp.status)
print(await resp.text())


loop = asyncio.get_event_loop()
loop.run_until_complete(getPage())

最佳答案

嘿,stream_coroutine() 中的while 循环在哪里?为什么你只读一次?

还应该调用协程:data=stream_coroutine() 而不是 data=stream_coroutine

关于python-3.x - 使用 aiohttp.post 我如何将一些数据传递给它以进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com