Резервные рабочие Faust зависают после истечения срока действия broker_max_poll_interval при использовании topi c с одним разделом - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь запустить простое приложение Faust, которое печатает сообщения из топи c только с одним разделом.

Когда запускается несколько рабочих, только один печатает сообщения, а другие рабочие просто стоят -по готовности взять на себя, если активный работник не удается. Проблема, с которой я сталкиваюсь, заключается в том, что резервные работники перестанут работать через несколько минут и не смогут вступить во владение, если произойдет перебалансировка. Это происходит после того, как broker_max_poll_interval истекает.

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

Само приложение просто:

app = faust.App('kafka', broker='kafka://x.x.x.x:9092;x.x.x.x:9092')

message_topic = app.topic('test_topic')

@app.agent(message_topic)
async def mystream(stream: faust.Stream):
    async for e in stream.events():
        print(e.value)

if __name__ == '__main__':
    app.main()

После истечения broker_max_poll_interval и повторного баланса происходит, работник застревает и должен быть повторно начался для того, чтобы снова иметь возможность присоединиться к группе:

[2020-01-29 15:13:12,238] [510] [WARNING] Heartbeat failed for group kafka because it is rebalancing 
[2020-01-29 15:13:12,239] [510] [INFO] Revoking previously assigned partitions frozenset() for group kafka

Обычно (до истечения времени таймера) он снова начинает присоединяться ..

[2020-01-29 15:13:04,213] [510] [WARNING] Heartbeat failed for group kafka-to-eedb because it is rebalancing
[2020-01-29 15:13:04,213] [510] [INFO] Revoking previously assigned partitions frozenset() for group kafka 
[2020-01-29 15:13:04,215] [510] [INFO] (Re-)joining group kafka 

Я новичок в Faust и потоковая обработка, я что-то упускаю очевидное?

Большое спасибо

...