Package: google-cloud-pubsub
Google Cloud Pub / Subis a fully-managed real-time messaging service that
allows you to send and receive messages between independent applications. You
can leverage Cloud Pub/Sub’s flexibility to decouple systems and components
hosted on Google Cloud Platform or elsewhere on the Internet. By building on
the same technology Google uses, Cloud Pub / Sub is designed to provide “at
least once” delivery at low latency with on-demand scalability to 1 million
messages per second (and beyond).Publisher applications can send messages to atopicand other applications
can subscribe to that topic to receive the messages. By decoupling senders and
receivers, Google Cloud Pub/Sub allows developers to communicate between
independently written applications.Product DocumentationClient Library DocumentationQuick StartIn order to use this library, you first need to go through the following steps:Select or create a Cloud Platform project.Enable billing for your project.Enable the Google Cloud Pub / Sub API.Setup Authentication.InstallationInstall this library in avirtualenvusing pip.virtualenvis a tool to
create isolated Python environments. The basic problem it addresses is one of
dependencies and versions, and indirectly permissions.Withvirtualenv, it’s possible to install this library without needing system
install permissions, and without clashing with the installed system
dependencies.Supported Python VersionsPython >= 3.7Deprecated Python VersionsPython <= 3.6.The last version of this library compatible with Python 2.7 is google-cloud-pubsub==1.7.0.Mac/Linuxpip install virtualenv
virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install google-cloud-pubsubWindowspip install virtualenv
virtualenv <your-env>
<your-env>\Scripts\activate
<your-env>\Scripts\pip.exe install google-cloud-pubsubExample UsagePublishingTo publish data to Cloud Pub/Sub you must create a topic, and then publish
messages to itimportosfromgoogle.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(name=topic_name)future=publisher.publish(topic_name,b'My first message!',spam='eggs')future.result()To learn more, consult thepublishing documentation.SubscribingTo subscribe to data in Cloud Pub/Sub, you create a subscription based on
the topic, and subscribe to that, passing a callback function.importosfromgoogle.cloudimportpubsub_v1topic_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.)defcallback(message):print(message.data)message.ack()withpubsub_v1.SubscriberClient()assubscriber:subscriber.create_subscription(name=subscription_name,topic=topic_name)future=subscriber.subscribe(subscription_name,callback)The future returned by the call tosubscriber.subscribecan be used to
block 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. To
learn more about subscribing, consult thesubscriber documentation.AuthenticationIt is possible to specify the authentication method to use with the Pub/Sub
clients. This can be done by providing an explicitCredentialsinstance. Support
for various authentication methods is available from thegoogle-authlibrary.For example, to use JSON Web Tokens, provide agoogle.auth.jwt.Credentialsinstance: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)VersioningThis library followsSemantic Versioning.It is currently in major version one (1.y.z), which means that the public API should be considered stable.ContributingContributions to this library are always welcome and highly encouraged.See theCONTRIBUTING docfor more information on how to get started.CommunityThe best place to ask questions is via Stackoverflow:https://stackoverflow.com/questions/tagged/google-cloud-pubsubLicenseApache 2.0 - Seethe LICENSEfor more information.