异步产生消息时出现aiokafka ProducerClosed错误

时间:2019-10-14 08:42:41

标签: python-asyncio python-3.7

我正在使用aiokafka异步生成消息。我有一个使用django的Api,它正在向kafka队列生成消息。运行正常。现在,当我将相同的api转换为使用aiohttp服务器时,将出现以下错误:-

  

aiokafka.errors.ProducerClosed:生产者关闭

成功生成第一条消息。上面的错误是第二条消息的产生。

loop = asyncio.get_event_loop()
producer = AIOKafkaProducer(
    loop=loop,
    bootstrap_servers="127.0.0.1:9092"
)
await producer.start()
response = await producer.send_and_wait(queue_name, msg)
await producer.stop()

在aiokafka文档中没有有关此错误的信息。请帮忙。

编辑: 我正在分享这个生产者。如果我让制片人保持开放状态,会引起任何问题吗?生产商什么时候会自动关闭?

1 个答案:

答案 0 :(得分:1)

  

aiokafka.errors.ProducerClosed:生产者关闭

将消息发送给封闭的生产者时出现此错误occurs

如果在处理程序之间共享生产者,请确保在生成第一条消息后不要关闭它。

编辑:您可以在cleanup context

中将其关闭
async def kafka(app):
    await producer.start()
    yield
    await producer.stop()


app.cleanup_ctx.append(kafka)

没有它,所有连接will try to close