Как правильно создавать Kafka Events в Django - PullRequest
1 голос
/ 27 мая 2020

Я использую django для проекта и хочу вызвать событие Kafka по какому-либо запросу. Я знаю, как создать событие 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)

Однако я не уверен, что это оптимально для создания KafkaProducer каждый раз в запросе. Есть ли способ создать производителя при запуске с постоянным подключением, и как это не имеет значения?

...