【问题标题】:How to integrate Django with Kafka using Python?如何使用 Python 将 Django 与 Kafka 集成?
【发布时间】:2018-09-11 17:46:55
【问题描述】:

我想将输入从 Django 传递到 Kafka。 我有字段 a,b,c,dh1,h2h3。所有字段均用户输入。 一旦用户在我的 Django 前端界面上输入提交按钮,我想启动我的 Kafka 进程。 所有字段都保存在 Mysql 中。

我只能使用 Mysql 连接器在 Java 中找到可能的解决方案。

是否有任何方法或连接器可以使用 python 将我的从 Django 界面上的用户输入传递给 kafka

a,b,c,d - 访问令牌

h1,h2,h3 - 搜索查询(关键字)

【问题讨论】:

    标签: python django apache-kafka


    【解决方案1】:

    是的,只需使用 kafka-python 包中的 KafkaProducer 即可。

    pip install kafka-python

    然后在你的 Django 函数中:

    def myfunc(request):
      from kafka import KafkaProducer
      producer = KafkaProducer(bootstrap_servers='kafkaBroker:9092')
      producer.send('foobar', b'test')
      return HttpResponse(200)
    

    【讨论】:

      【解决方案2】:

      先安装kafka-python,然后在views.py中导入以下语句。

      1. from kafka import KafkaProducer
      2. from kafka import KafkaConsumer
      3. from json import loads
      4. import json
      5. import pickle //pickle converts data into byte array

      然后写Producer视图如下。

      此代码将数据转换为字节数组并发送到kafka。除了发送 json 消息 v 之外,您还可以发送数据,例如 v=your data。

      def kfk(request):   
          producer = KafkaProducer(bootstrap_servers='127.0.0.1:9092')
          v = {
              'msg': {
                  'hello': 'world',
              },
          }
          serialized_data = pickle.dumps(v, pickle.HIGHEST_PROTOCOL)
          producer.send('Ptopic', serialized_data)
          return HttpResponse(200)
      

      消费数据:

      def cons(request):
          consumer = KafkaConsumer('Ptopic', 
              bootstrap_servers=['localhost:9092'], 
              api_version=(0, 10) 
              #,consumer_timeout_ms=1000
          )
      
          for message in consumer:
              deserialized_data = pickle.loads(message.value) 
              print(deserialized_data)
      

      注意:Kafka 消费者视图应始终处于运行模式,然后尝试在此处生成 Ptopic 是我的主题名称。

      【讨论】:

        猜你喜欢
        • 2010-11-29
        • 2015-07-29
        • 1970-01-01
        • 2020-11-12
        • 1970-01-01
        • 2019-06-12
        • 2022-09-28
        • 1970-01-01
        • 2021-05-22
        相关资源
        最近更新 更多