Отправка списка производителю Kafka с использованием python

Поддержка основных параметров запроса HTTP предоставляется в модуле CGI . Рекомендуемым механизмом обработки данных формы является класс cgi.FieldStorage.

Чтобы получить данные в форме отправки, лучше всего использовать класс FieldStorage. Другие классы, определенные в этом модуле, предоставляются в основном для обратной совместимости. Создайте его ровно один раз, без аргументов. Это считывает содержимое формы из стандартного ввода или среды (в зависимости от значения переменных среды, заданных в соответствии со стандартом CGI). Поскольку он может потреблять стандартный ввод, он должен быть создан только один раз.

Экземпляр FieldStorage может быть проиндексирован как словарь Python. Он позволяет тестировать членство с оператором in, а также поддерживает стандартный метод слова keys() и встроенную функцию len(). Поля формы, содержащие пустые строки, игнорируются и не отображаются в словаре; чтобы сохранить такие значения, предоставить истинное значение для необязательного параметра ключевого слова keep_blank_values ​​при создании экземпляра FieldStorage.

Например, следующий код (который предполагает, что заголовок Content-Type и пустая строка уже был напечатан) проверяет, что имена полей и addr оба установлены в непустую строку:

blockquote>
form = cgi.FieldStorage()
if "name" not in form or "addr" not in form:
    print "

Error

" print "Please fill in the name and addr fields." return print "

name:", form["name"].value print "

addr:", form["addr"].value #...further form processing here...

0
задан Chris X 19 March 2019 в 00:23
поделиться

2 ответа

это решается путем первого преобразования списка в байтовые массивы.

rList = [1, 2, 3, 4, 5]

arr = bytes(rList)
print(arr)

результат -

b'\x01\x02\x03\x04\x05'
0
ответ дан Chris X 19 March 2019 в 00:23
поделиться

Рассматривали ли вы кодировку JSON? Если вы сконфигурируете свой KafkaProducer с параметром value_serializer следующим образом:

KafkaProducer(value_serializer=lambda v: json.dumps(v).encode('utf-8'))

, то вы сможете отправлять свои списки напрямую следующим образом:

producer.send('test', [1, 2, 3])
producer.send('test', ["cat", "dog", "fish"])

Потребители должны быть настроены на декодировать через JSON, а также. Если вы используете kafka-python, вы можете сделать что-то вроде:

KafkaConsumer(value_deserializer=lambda v: json.loads(v.decode('utf-8')))
0
ответ дан dpkp 19 March 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: