Google cloud platform Google云函数从发布/订阅中拉取引发异常-超过截止日期
我在Python3.7中有一个GoogleCloud函数,它以同步拉模式读取发布/订阅 运行fine 1/hour 24小时后,它抛出以下异常堆栈跟踪: 回溯(最近一次调用):文件Google cloud platform Google云函数从发布/订阅中拉取引发异常-超过截止日期,google-cloud-platform,google-cloud-functions,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Pubsub,我在Python3.7中有一个GoogleCloud函数,它以同步拉模式读取发布/订阅 运行fine 1/hour 24小时后,它抛出以下异常堆栈跟踪: 回溯(最近一次调用):文件 “/env/local/lib/python3.7/site packages/google/api_core/grpc_helpers.py”, 第57行,出现错误\u重新映射\u可调用 返回可调用的文件“/env/local/lib/python3.7/site packages/grpc/_channel.py
“/env/local/lib/python3.7/site packages/google/api_core/grpc_helpers.py”,
第57行,出现错误\u重新映射\u可调用
返回可调用的文件“/env/local/lib/python3.7/site packages/grpc/_channel.py”,第824行,
在中呼叫
返回文件“/env/local/lib/python3.7/site packages/grpc/_channel.py”,行
726,一元响应中的阻塞
raise _InactiveRpcError(state)grpc._channel._InactiveRpcError:当订阅中没有要读取的消息时,客户端会引发此异常。它是最新PubSub library版本>=1.0.0中的一个。如有必要,您可以降级到不存在此问题的版本0.45.0 但是,作为一种解决方法,您可以捕获DeadlineExceeded异常并重试该操作。此外,基于,这里有一个小monkeypatch,您可以将其添加到运行的代码中,这可能有助于获得与0.45.0版相同的行为
从google.cloud.pubsub_v1.gapic导入订户_客户端_配置为sub_配置
sub_config.config['interfaces']['google.pubsub.v1.Subscriber']['retry_params']['messaging']['initial_rpc_timeout_millis']=25000
最后,请记住,在使用同步拉取时,这反过来可能会导致更高的延迟拉取请求(以及超过死线的错误)。虽然,如果延迟对于应用程序来说是至关重要的,但是您可以考虑使用它似乎是指。作为一种解决方法,我建议捕获异常并重试该操作。嗯,这似乎很奇怪。文档中说pull可能返回零条消息,所以我不希望在这种情况下出现异常。是的,PubSub库中似乎存在问题。显然,在版本
v0.45.0
中,不会发生错误。我的猜测是,这个问题与立即返回的行为有关。此标志已被弃用,且行为设置为等效于return\u instally=False
,因此客户端在等待新消息时保持连接处于活动状态,直到基础grpc截止日期引发异常Nah,gotcha。我考虑立即使用return,因为我只想获取当前可用的所有内容,但实际上我没有指定它,这应该是=False场景。但也许我应该设置超时,因为我让它默认。这很难,因为Python文档确实留下了很多猜测。谢谢,@TlaquetzalI,我很高兴能帮上忙!