Как добиться того, чтобы отправить необработанные ответы - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь получить ответы в байтах, используя Faust Stream. Но он всегда кодирует ответы как sting (потому что faust использует json code c для ответов). Можно ли получить ответы в байтах?

import asyncio
import faust


app = faust.App(
    'raw-example',
    broker=...,
    value_serializer='raw',
    reply_create_topic=True,
    topic_partitions=1,
    topic_replication_factor=3,
)

@app.timer(2.0, on_leader=True)
async def publish_greetings():
    print('PUBLISHING ON LEADER!')
    res = await say.ask(value=b'some greeting')
    print(f'Reply: {res} type {type(res)}')

@app.agent()
async def say(greetings):
    async for greeting in greetings:
        print(f'In listener: {greeting} type {type(greeting)}')
        yield greeting

app.conf.web_enabled = False        

async def start_worker(worker):
    await worker.start()

def manage_loop():
    loop = asyncio.get_event_loop()
    worker = faust.Worker(app, loop=loop, loglevel='WARNING')
    try:
        loop.run_until_complete(start_worker(worker))
    finally:
        worker.stop_and_shutdown()


manage_loop()

Здесь он получает bytes в слушателе say, но в значении будет str, возвращаемое ask

Платформа: Linux -4.15.0-1050- azure -x86_64-with-debian-stretch-sid

Python 3.7.3

Faust: 1.10. 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...