Добрый день,
Это мой первый пост, так что извините, если я что-то не так с постом. Я пытаюсь запустить службу типа подписки, которая работает нормально, пока клиент не отключится. В зависимости от времени это работает нормально или блокируется на неопределенный срок.
def Subscribe(self, request, context):
words = ["Please", "help", "me", "solve", "my", "problem", "!"]
while context.is_active():
try:
for word in words:
event = fr_pb2.Event(word=word)
if not context.is_active():
break
yield event
print (event)
except Exception as ex:
print(ex)
context.cancel()
print("Subscribe ended")
Я новичок в gRP C, поэтому, возможно, я кое-что делаю неправильно, но моя главная проблема заключается в том, что если клиент отключается непосредственно перед / во время выхода, код зависает на неопределенный срок. Я попытался несколько вещей, чтобы выйти из этой ситуации, но они работают только несколько раз. Тайм-аут, установленный на стороне клиента, ведет обратный отсчет, но доходность не заканчивается, когда обратный отсчет достигает 0. Обратный вызов происходит нормально, но context.cancel и context.abort, похоже, здесь тоже не помогают.
Могу ли я что-нибудь сделать, чтобы предотвратить зависание доходности или установить какое-то время ожидания, чтобы доходность в конечном итоге закончилась? Любая помощь / совет с благодарностью.