Google Cloud Platform Pub Sub - Python Client 不发布消息



设置是这样的:

我设置了一个主题来接收消息,然后我使用发布/订阅到 GCS 文本模板设置了一个数据流管道,该模板将消息转储到 GCS 存储桶中的窗口文本文件中。这工作正常 - 我最终在GCS中获取文件,其中包含我使用主题上的"发布消息"按钮通过控制台发送的测试消息(旁注我以为它会保存消息的"数据"部分,但看起来它只保存消息正文。但我可以解决这个问题(。

问题:

我打算使用 python 客户端(最终来自 App Engine(向该主题发送消息......但是当我从本地机器发送它们时,我无法让它工作。我正在使用pubsub_v1模块遵循 https://cloud.google.com/pubsub/docs/publisher 中非常简单的示例。即使将批处理设置设置为 1kb/1s,我也永远无法成功发布任何设置。将来 5 分钟后我不断收到此错误没有响应:

Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/path/to/environment/lib/python2.7/site-packages/google/cloud/pubsub_v1/publisher/batch/thread.py", line 239, in monitor
return self._commit()
File "/path/to/environment/lib/python2.7/site-packages/google/cloud/pubsub_v1/publisher/batch/thread.py", line 204, in _commit
self._messages,
File "/path/to/environment/lib/python2.7/site-packages/google/cloud/pubsub_v1/gapic/publisher_client.py", line 325, in publish
return self._publish(request, retry=retry, timeout=timeout)
File "/path/to/environment/lib/python2.7/site-packages/google/api_core/gapic_v1/method.py", line 139, in __call__
return wrapped_func(*args, **kwargs)
File "/path/to/environment/lib/python2.7/site-packages/google/api_core/retry.py", line 260, in retry_wrapped_func
on_error=on_error,
File "/path/to/environment/lib/python2.7/site-packages/google/api_core/retry.py", line 195, in retry_target
last_exc)
File "/path/to/environment/lib/python2.7/site-packages/six.py", line 737, in raise_from
raise value
RetryError: Deadline of 600.0s exceeded while calling <functools.partial object at 0x10662de68>, last exception: 503 Getting metadata from plugin failed with error: ('invalid_grant: Bad Request', u'{n  "error" : "invalid_grant",n  "error_description" : "Bad Request"n}')

代码示例:

>>> from google.cloud import pubsub_v1
>>> BATCH_SETTINGS = pubsub_v1.types.BatchSettings(max_bytes=1024,max_latency=1)
>>> publisher = pubsub_v1.PublisherClient(BATCH_SETTINGS)
>>> topic_path = publisher.topic_path("my-project", "topic-name")
>>> publisher.publish(topic_path, b'first message from python 3:38:59')

更新:部署我的应用程序后,在生产中一切正常。这很好满足我的需求,但知道为什么在我的计算机上以调试模式本地运行时它不起作用仍然很好。

这是一个已知问题,如果您运行 python 的环境的系统时钟不同步,则可能会出现此问题,您将无法进行身份验证。在不知道运行哪种系统的情况下,很难知道如何同步时钟,但您可以在此处查看更多详细信息。

相关内容

最新更新