如何从pyzmq中的生成器发送味精?
Posted
技术标签:
【中文标题】如何从pyzmq中的生成器发送味精?【英文标题】:how to send msg from generator in pyzmq? 【发布时间】:2021-05-10 13:07:12 【问题描述】:来自:https://github.com/zeromq/pyzmq/issues/1290
def encap_msg(msg):
yield b'Procotol v1`
yield uuid.uuid4().bytes
yield from msg
socket.send_multipart(encap_msg(msg))
当我运行这段 sn-p 部分代码时,它引发了一个错误。
File "xxxxxx/zmq/sugar/socket.py", line 439, in send_multipart
for msg in msg_parts[:-1]:
'generator' object is not subscriptable
根据文档,msg_parts是可迭代的,generators是可迭代的。
例如,在 TTS 中,请求是文本,响应是流音频,如何使用 pyzmq/ 从生成器一一发送音频帧
【问题讨论】:
【参考方案1】:问: 如何在pyzmq中从generator发送msg?
一个:
直到pyzmq
-language wrapper 开始为这种语法糖化提供工作代码,到目前为止它似乎还没有这样做,如 2022 年第一季度所见,
有人可能会做这样的事情:
...
with encap_msg( msg ) as aGeneratorINSTANCE: # tradeoffs of small-[TIME] add-on cost
try: # for safe-[SPACE] savings
for aMessageFRAME in aGeneratorINSTANCE: #
socket.send_multipart( aMessageFRAME,# Hopes with us to see Zero-copy effect
zmq.SNDMORE ) #
except: #
pass #
finally: # Dirty? Perhaps, but works safe
socket.send_multipart( "", # one (empty) tail message
zmq.DONTWAIT )# Not to remain hang waiting on API
pass # hope you enjoy this
...
【讨论】:
以上是关于如何从pyzmq中的生成器发送味精?的主要内容,如果未能解决你的问题,请参考以下文章
在 c# 中创建/打开从路径到新 Outlook.MailItem 的现有味精