# #google-cloud-platform #google-cloud-endpoints #google-cloud-pubsub
#google-облачная платформа #google-облачные конечные точки #google-облако-pubsub
Вопрос:
Я получаю эту ошибку, когда запускаю с нуля более 4 синхронизированных процессов:
{ "insertId": "61a4a4920009771002b74809", "jsonPayload": { "asctime": "2021-11-29 09:59:46,620", "message": "Exception in callback lt;bound method ResumableBidiRpc._on_call_done of lt;google.api_core.bidi.ResumableBidiRpc object at 0x3eb1636b2cd0gt;gt;: ValueError('Cannot invoke RPC: Channel closed!')", "funcName": "handle_event", "lineno": 183, "filename": "_channel.py" }
Это схема pub-sub: паб-подсхема
Ошибка, по — видимому, возникает на шаге 9 или 10. Фактический код таков:
future = publisher.publish( topic_path, encoded_message, msg_attribute=message_key ) future.add_done_callback( callback=lambda f: logging.info(...) ) subscriber = pubsub_v1.SubscriberClient() subscription_path = subscriber.subscription_path( PROJECT_ID, "..." ) streaming_pull_future = subscriber.subscribe( subscription_path, callback=aggregator_callback_handler.handle_message ) aggregator_callback_handler.callback = streaming_pull_future wait_result( timeout=300, pratica=..., f_check_res_condition=lambda: aggregator_callback_handler.response is not None ) streaming_pull_future.cancel() subscriber.close()
Модуль aggregator_callback_handler
обрабатывает .нак и .ак.
Ошибка возвращается в течение нескольких секунд, затем виртуальные машины, на которых размещены службы, масштабируются, и ошибка прекращается. То же самое, если вместо того, чтобы запускать процессы все вместе, я масштабирую их вручную, запуская их один за другим и оставляя некоторое время между ними.
Я уже проверил тайм-ауты и вывел подписчика за пределы контекстного менеджера, но эти решения не работают.
Есть идеи, как с этим справиться?