Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google Cloud PubSub超时异常_Python_Google Cloud Platform_Timeout_Google Cloud Pubsub - Fatal编程技术网

Python Google Cloud PubSub超时异常

Python Google Cloud PubSub超时异常,python,google-cloud-platform,timeout,google-cloud-pubsub,Python,Google Cloud Platform,Timeout,Google Cloud Pubsub,我正忙着使用Google Cloud处理PubSub,我已经实现了Google PubSub订阅服务器,堆栈工作正常,但有时我会遇到一个问题,即回调超时,然后订阅服务器线程似乎挂起,如下图所示: 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:

我正忙着使用Google Cloud处理PubSub,我已经实现了Google PubSub订阅服务器,堆栈工作正常,但有时我会遇到一个问题,即回调超时,然后订阅服务器线程似乎挂起,如下图所示:

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.
这在谷歌云文档中有描述

我的实际订户代码和异常处理如下:

    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()
时超时

当您调用
protocol.subscribe()
时,您是否正在检索Pub/Sub Python客户端库中
subscribe()
返回的未来?如果是这样的话,您不应该在以后调用
result()
时超时

嘿,我正在使用带有超时的result(),但它似乎没有按预期工作,因为当超时发生时,它仍然可以挂起。我将尝试使用指数退避重试消息,重试3次后,我将丢弃该消息并将其放入死信队列。我认为问题在于,它超时了,但随后继续重试消息,但日志会保持沉默,因此很难判断。谢谢你!嘿,我正在使用带有超时的result(),但它似乎没有按预期工作,因为当超时发生时,它仍然可以挂起。我将尝试使用指数退避重试消息,重试3次后,我将丢弃该消息并将其放入死信队列。我认为问题在于,它超时了,但随后继续重试消息,但日志会保持沉默,因此很难判断。谢谢你!