Sub-Python Client Google Cloud Platform Pub не публикует сообщения - PullRequest
0 голосов
/ 04 июля 2018

Настройка такова:

У меня есть тема, настроенная для получения сообщений, и затем у меня настроен конвейер потока данных с использованием Pub / Sub to GCS Text Template , который выводит сообщения в текстовые файлы с окнами в ведро GCS. Это работает нормально - в конечном итоге я получаю файлы в GCS, содержащие тестовые сообщения, которые я отправляю через консоль, используя кнопку «Опубликовать сообщение» в моей теме (примечание, я думал, что это сохранит часть «данных» сообщения, но похоже, что это только сохраняет тело сообщения. Но я могу обойти это).

Проблема:

Я собираюсь отправлять сообщения в тему с помощью клиента Python (в конечном итоге из App Engine) ... но я не могу заставить его работать, когда отправляю их с локального компьютера. Я следую очень простым примерам в https://cloud.google.com/pubsub/docs/publisher,, используя модуль pubsub_v1. Даже с пакетными настройками, установленными на 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')

Обновление: После развертывания моего приложения все работает нормально во время работы. Это хорошо для моих нужд, но было бы неплохо узнать, почему он не работает при локальном запуске в режиме отладки на моем компьютере.

1 Ответ

0 голосов
/ 23 апреля 2019

Это известная проблема, которая может возникнуть, когда вы не сможете аутентифицироваться, если системные часы среды, в которой вы запускаете python, не синхронизированы. Трудно понять, как синхронизировать ваши часы, не зная, на какой системе вы работаете, но вы можете увидеть здесь для более подробной информации.

...