簡體   English   中英

Python Google Cloud PubSub超時異常

[英]Python Google Cloud PubSub TimeOut Exception

我正在使用Google Cloud處理PubSub,並且已經實現了Google PubSub Subscriber,並且堆棧按預期工作,但是有時我遇到一個問題,即回調發生超時,然后訂閱線程似乎掛起,如下所示:

DEBUG 2019-08-14 09:49:13,130 google.cloud.pubsub_v1.subscriber.policy.thread.dispatch_callback:287- Handling 1 batched requests
DEBUG 2019-08-14 09:49:15,441 google.cloud.pubsub_v1.subscriber.policy.base.maintain_leases:347- The current p99 value is 10 seconds.
DEBUG 2019-08-14 09:49:15,442 google.cloud.pubsub_v1.subscriber.policy.base.maintain_leases:397- Snoozing lease management for 2.925854 seconds.
ERROR 2019-08-14 09:49:16,315 models.subscribe:104- Subscriber Timeout occurred Timed out waiting for result.

這是具體的錯誤:

 Timed out waiting for result.

這在google cloud文檔中進行了介紹

我的實際訂戶代碼和異常處理如下:

    protocol = self.get_subscriber_protocol()

    logger.info("Starting subscriber %s on topic %s", os.environ.get('PUBSUB_CLIENT_ID'), topic)

    future = protocol.subscribe(topic,
                                callback=callback,
                                always_raise=False,
                                create_topic=True,
                                exception_handler=exception_handler)

    try:
        future.result(timeout=120)
    except TimeoutError as te:
        logger.error("Subscriber Timeout occurred {}".format(te))
    except Exception as e:
        logger.error(e)

據我了解,如果發生超時,則訂戶應記錄一條消息並丟棄該消息,但是似乎阻塞了線程。

我只是想知道是否有人經歷過這種情況,而處理這種情況的最佳方法是什么?

謝謝!

當您調用protocol.subscribe() ,您是否正在檢索Pub / Sub Python客戶端庫中的subscribe()返回的未來? 如果是這樣,則不應在該將來發生超時的情況下調用result() https://googleapis.github.io/google-cloud-python/latest/pubsub/subscriber/api/client.html#google.cloud.pubsub_v1.subscriber.client.Client.subscribe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM