我正在使用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文档中没有有关此错误的信息。请帮忙。
编辑: 我正在分享这个生产者。如果我让制片人保持开放状态,会引起任何问题吗?生产商什么时候会自动关闭?
答案 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