Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

License

NotificationsYou must be signed in to change notification settings

sethmaxwl/python-pubsub

 
 

Repository files navigation

GApypiversions

Google Cloud Pub / Sub is a fully-managed real-time messaging service thatallows you to send and receive messages between independent applications. Youcan leverage Cloud Pub/Sub’s flexibility to decouple systems and componentshosted on Google Cloud Platform or elsewhere on the Internet. By building onthe same technology Google uses, Cloud Pub / Sub is designed to provide “atleast once” delivery at low latency with on-demand scalability to 1 millionmessages per second (and beyond).

Publisher applications can send messages to atopic and other applicationscan subscribe to that topic to receive the messages. By decoupling senders andreceivers, Google Cloud Pub/Sub allows developers to communicate betweenindependently written applications.

Quick Start

In order to use this library, you first need to go through the following steps:

  1. Select or create a Cloud Platform project.
  2. Enable billing for your project.
  3. Enable the Google Cloud Pub / Sub API.
  4. Setup Authentication.

Installation

Install this library in avirtualenv using pip.virtualenv is a tool tocreate isolated Python environments. The basic problem it addresses is one ofdependencies and versions, and indirectly permissions.

Withvirtualenv, it's possible to install this library without needing systeminstall permissions, and without clashing with the installed systemdependencies.

Supported Python Versions

Python >= 3.5

Deprecated Python Versions

Python == 2.7. Python 2.7 support will be removed on January 1, 2020.

Mac/Linux

pip install virtualenvvirtualenv <your-env>source <your-env>/bin/activate<your-env>/bin/pip install google-cloud-pubsub

Windows

pip install virtualenvvirtualenv <your-env><your-env>\Scripts\activate<your-env>\Scripts\pip.exe install google-cloud-pubsub

Example Usage

Publishing

To publish data to Cloud Pub/Sub you must create a topic, and then publishmessages to it

importosfromgoogle.cloudimportpubsub_v1publisher=pubsub_v1.PublisherClient()topic_name='projects/{project_id}/topics/{topic}'.format(project_id=os.getenv('GOOGLE_CLOUD_PROJECT'),topic='MY_TOPIC_NAME',# Set this to something appropriate.)publisher.create_topic(topic_name)publisher.publish(topic_name,b'My first message!',spam='eggs')

To learn more, consult thepublishing documentation.

Subscribing

To subscribe to data in Cloud Pub/Sub, you create a subscription based onthe topic, and subscribe to that, passing a callback function.

importosfromgoogle.cloudimportpubsub_v1subscriber=pubsub_v1.SubscriberClient()topic_name='projects/{project_id}/topics/{topic}'.format(project_id=os.getenv('GOOGLE_CLOUD_PROJECT'),topic='MY_TOPIC_NAME',# Set this to something appropriate.)subscription_name='projects/{project_id}/subscriptions/{sub}'.format(project_id=os.getenv('GOOGLE_CLOUD_PROJECT'),sub='MY_SUBSCRIPTION_NAME',# Set this to something appropriate.)subscriber.create_subscription(name=subscription_name,topic=topic_name)defcallback(message):print(message.data)message.ack()future=subscriber.subscribe(subscription_name,callback)

The future returned by the call tosubscriber.subscribe can be used toblock the current thread until a given condition obtains:

try:future.result()exceptKeyboardInterrupt:future.cancel()

It is also possible to pull messages in a synchronous (blocking) fashion. Tolearn more about subscribing, consult thesubscriber documentation.

Authentication

It is possible to specify the authentication method to use with the Pub/Subclients. This can be done by providing an explicitCredentials instance. Supportfor various authentication methods is available from thegoogle-auth library.

For example, to use JSON Web Tokens, provide agoogle.auth.jwt.Credentials instance:

importjsonfromgoogle.authimportjwtservice_account_info=json.load(open("service-account-info.json"))audience="https://pubsub.googleapis.com/google.pubsub.v1.Subscriber"credentials=jwt.Credentials.from_service_account_info(service_account_info,audience=audience)subscriber=pubsub_v1.SubscriberClient(credentials=credentials)# The same for the publisher, except that the "audience" claim needs to be adjustedpublisher_audience="https://pubsub.googleapis.com/google.pubsub.v1.Publisher"credentials_pub=credentials.with_claims(audience=publisher_audience)publisher=pubsub_v1.PublisherClient(credentials=credentials_pub)

OpenTelemetry Tracing

To enable OpenTelemetry tracing in Pub/Sub clients, theopentelemetry-api,opentelemetry-sdk,andopentelemetry-instrumentation libraries must be installed. After installation, OpenTelemetrycan be used with any publisher or subscriber client by specifying an exporter for traces.

For example, for traces to be exported to Google Cloud Tracing, the Cloud Trace exporter must be specified.

fromopentelemetryimporttracefromopentelemetry.sdk.traceimportTracerProviderfromopentelemetry.sdk.trace.exportimportSimpleExportSpanProcessorfromopentelemetry.exporter.cloud_traceimportCloudTraceSpanExportertrace.set_tracer_provider(TracerProvider())trace.get_tracer_provider().add_span_processor(SimpleExportSpanProcessor(CloudTraceSpanExporter()))

For more information on OpenTelemetry, please consult theOpenTelemetry documentation.

Versioning

This library followsSemantic Versioning.

It is currently in major version one (1.y.z), which means that the public API should be considered stable.

Contributing

Contributions to this library are always welcome and highly encouraged.

See theCONTRIBUTING doc for more information on how to get started.

Community

Google Cloud Platform Python developers hang out inSlack in the#pythonchannel, click here toget an invitation.

License

Apache 2.0 - Seethe LICENSE for more information.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python98.6%
  • Shell1.4%

[8]ページ先頭

©2009-2025 Movatter.jp