Я использую 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 каждый раз в запросе. Есть ли способ создать производителя при запуске с постоянным подключением, и как это не имеет значения?