Братцы, а не работал ли кто с библиотекой fastkafka? Я создал

свой consumes-метод:

@kafka_app.consumes(topic="example_topic", auto_offset_reset="earliest", enable_auto_commit=True)
async def on_example_topic(msg: dict, meta: EventMetadata):
print(f"Got message: {msg}")
print(f"Got meta: {meta}")
print("---")

И заметил странное: что он всегда начинает прокручивать сообщения в очереди, начиная с offset=0, даже если при предыдущих запусках сервера эти сообщения уже обрабатывались.
Как бы это забороть?

20 ответов

38 просмотров

выкинуть говно на питоне и взять нормальную либу для спарка на scala, которая умеет в 100 раз больше. быстрее и лучше

А как groupId задаёте?

Felix-Neko Автор вопроса
Anatoliy
А как groupId задаёте?

Хех, задал я group_id в декораторе — и он таки перестал обрабатывать эти сообщения по второму кругу. Радостно!

Felix Neko
Хех, задал я group_id в декораторе — и он таки пер...

Стоит изучить получше как Kafka работает, потому что там много разных нюансов на которые можно напороться. Кафка требует глубокого понимания своего внутреннего устройства. Иначе имеет смысл смотреть в сторону более простых решений вроде AMQP

Felix-Neko Автор вопроса
Старый Хрыч
выкинуть говно на питоне и взять нормальную либу д...

Боюсь, вы слишком хорошего обо мне мнения = )

Felix Neko
Боюсь, вы слишком хорошего обо мне мнения = )

ну если вы собираетесь делать высоконагруженное приложение, то выборов не много

Так ведь опция auto_offset_reset="earliest" предписывает читать топик с начала

Felix-Neko Автор вопроса
Старый Хрыч
ну если вы собираетесь делать высоконагруженное п...

Ненене, больших нагрузок здесь не будет. Просто Кафка уже установлена, и ей можно пользоваться.

Felix-Neko Автор вопроса
Vadim Zaigrin
Так ведь опция auto_offset_reset="earliest" предпи...

Тут есть тонкость: когда я пользовался простым consumer'ом из kafka-python, то там при earliest-политике пропускались уже закоммиченные сообщения. И я думаю, как мне добиться такого же поведения и здесь. Причём так, чтобы коммитить сообщение только тогда, когда оно корректно обработано. А если некорректно, то дальше по партиции не ходить — и спамить в логи сообщениями об ошибках.

Felix Neko
Тут есть тонкость: когда я пользовался простым con...

Можно выключить автокоммит и коммитеть самому синхронно или асинхронно.

Felix-Neko Автор вопроса
Vadim Zaigrin
Попробуйте auto_offset_reset="latest"

По-моему, это имеет значение только тогда, когда коммитов не было.

Felix-Neko Автор вопроса

Это было бы очень здорово. Пользуясь kafka-python, я так и делал. А как бы такое сделать в fastkafka?

Felix Neko
Это было бы очень здорово. Пользуясь kafka-python,...

Если нужен клиент на Python, посмотрите на вариант от Confluent.

Видимо простой консумер указывал какую-то группу, а ваш новый нет. Почитайте про группы консумеров в кафке. Видимо между запусками чистится группа или же консумер каждый раз берет новую группу себе.

Felix-Neko Автор вопроса
Anatoliy
Видимо простой консумер указывал какую-то группу, ...

Кстати, а что бы лучше почитать по теории работы Кафки?

Felix Neko
Кстати, а что бы лучше почитать по теории работы К...

https://www.piter.com/collection/all/product/apache-kafka-potokovaya-obrabotka-i-analiz-dannyh-2-e-izdanie

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

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта