如何在 Django 中正确生成 Kafka 事件

Gre*_*eco 5 django apache-kafka django-rest-framework kafka-producer-api

我正在使用 django 进行项目,并希望根据某些请求触发 Kafka 事件。我知道如何在视图中生成卡夫卡事件。

class TestList(generics.ListCreateAPIView):
    permission_classes = [permissions.IsAuthenticated]

    queryset = Test.objects.all()
    serializer_class = TestSerializer

    def post(self, request, *args, **kwargs):
        serializer = TestSerializer(data=request.data)

        if serializer.is_valid():
            serializer.save()

            producer = KafkaProducer(bootstrap_servers=[f'{settings.SECRETS.kafka.host}:{settings.SECRETS.kafka.port}'],
                                     value_serializer=lambda m: json.dumps(m).encode('ascii'))
            kafka_msg = {
                'msg': {
                    'hello': 'world',
                },
            }
            producer.send('test', key=serializer.instance.id.bytes, value=kafka_msg) \
                .add_callback(on_send_success).add_errback(on_send_error)

            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定每次在请求中创建 KafkaProducer 是否是最佳选择。有没有一种方法可以在启动时通过持久连接创建生产者,以及它如何或不会有什么区别吗?