from google.cloud import pubsub_v1
if __name__ == '__main__':
publisher = pubsub_v1.PublisherClient(
credentials = "/Users/quang/.config/gcloud/application_default_credentials.json"
)
a = publisher.list_topics(
timeout=10,
)
print(a)
Ошибка: вызвать исключения.from_grpc_error(exc) из exc
google.api_core.Exceptions.DeadlineExceeded: 504 Крайний срок превышен
питон 3.12.3
Google-API-ядро 2.19.0
Google-API-Python-клиент 2.135.0
Google-аутентификация 2.29.0
Google-аутентификация-httplib2 0.2.0
Google-облачное ядро 2.4.1
Google-облако-Firestore 2.16.0
Google-cloud-pubsub 2.13.12
Я использую Google Pub/Sub для своего проекта. Я выполнил все шаги, описанные в документации. Однако я столкнулся с ошибкой 504. Кто-нибудь может мне помочь?
Вам не нужно предоставлять application_default_credentials.json
pubsub_v1.PublisherClient
.
Клиент использует Учетные данные приложения по умолчанию (ADC), и явное предоставление учетных данных в этом случае не только избыточно, но и противоречит шаблону.
Однако используя эти учетные данные конечного пользователя, а не, например. Учетная запись службы означает, что клиент не настроен для использования конкретного проекта Google, и это объясняет, почему время ожидания команды истекает с ошибкой 504.
Чтобы код работал, вам необходимо убедиться, что метод list_topics
получает проект Google. Есть различные способы сделать это. Либо предоставьте его через среду, либо установите статически в своем коде.
Пытаться:
from google.cloud import pubsub_v1
PROJECT = "..." # Or os.getenv("PROJECT") and set in the enviroment
if __name__ == "__main__":
publisher = pubsub_v1.PublisherClient()
a = publisher.list_topics(
project=f"projects/{PROJECT}",
)