- Notifications
You must be signed in to change notification settings - Fork213
License
googleapis/python-pubsub
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
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.
In 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.
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.
Python >= 3.7
Python <= 3.6.
The last version of this library compatible with Python 2.7 is google-cloud-pubsub==1.7.0.
pip install virtualenvvirtualenv <your-env>source <your-env>/bin/activate<your-env>/bin/pip install google-cloud-pubsub
pip install virtualenvvirtualenv <your-env><your-env>\Scripts\activate<your-env>\Scripts\pip.exe install google-cloud-pubsub
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(name=topic_name)future=publisher.publish(topic_name,b'My first message!',spam='eggs')future.result()
To learn more, consult thepublishing documentation.
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_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.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.
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)
This library followsSemantic Versioning.
It is currently in major version one (1.y.z), which means that the public API should be considered stable.
Contributions to this library are always welcome and highly encouraged.
See theCONTRIBUTING doc for more information on how to get started.
The best place to ask questions is via Stackoverflow:https://stackoverflow.com/questions/tagged/google-cloud-pubsub
Apache 2.0 - Seethe LICENSE for more information.
About
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.