1
1
Using the API
2
2
=============
3
3
4
- Connection / Authorization
5
- --------------------------
4
+ Authorization / Configuration
5
+ -----------------------------
6
6
7
- - Inferred defaults used to create connection if none configured explicitly:
7
+ - Use :class: `Client <gcloud.pubsub.client.Client> ` objects to configure
8
+ your applications.
8
9
9
- - credentials (derived from GAE / GCE environ if present).
10
+ - :class: `Client <gcloud.pubsub.client.Client> ` objects hold both a ``project ``
11
+ and an authenticated connection
10
12
11
- - ``project `` (derived from GAE / GCE environ if present).
13
+ - The authentication credentials can be implicitly determined from the
14
+ environment or directly via
15
+ :meth: `with_service_account_json <gcloud.pubsub.client.Client.with_service_account_json> `
16
+ and
17
+ :meth: `with_service_account_p12 <gcloud.pubsub.client.Client.with_service_account_p12> `.
12
18
13
- - ``scopes ``
19
+ - After setting ``GOOGLE_APPLICATION_CREDENTIALS `` and ``GCLOUD_PROJECT ``
20
+ environment variables, create a :class: `Client <gcloud.pubsub.client.Client> `
21
+
22
+ .. doctest ::
23
+
24
+ >>> from gcloud import pubsub
25
+ >>> client = pubsub.Client()
14
26
15
27
16
28
Manage topics for a project
@@ -20,51 +32,38 @@ Create a new topic for the default project:
20
32
21
33
.. doctest ::
22
34
23
- >>> from gcloud.pubsub import Topic
24
- >>> topic = Topic(' topic_name' )
25
- >>> topic.create() # API request
26
-
27
- Create a new topic for an explicit project:
28
-
29
- .. doctest ::
30
-
31
- >>> from gcloud.pubsub import Topic
32
- >>> topic = Topic(' topic_name' , project = ' my.project' )
35
+ >>> from gcloud import pubsub
36
+ >>> client = pubsub.Client()
37
+ >>> topic = client.topic(' topic_name' )
33
38
>>> topic.create() # API request
34
39
35
- Check for the existance of a topic:
40
+ Check for the existence of a topic:
36
41
37
42
.. doctest ::
38
43
39
- >>> from gcloud.pubsub import Topic
40
- >>> topic = Topic(' topic_name' )
44
+ >>> from gcloud import pubsub
45
+ >>> client = pubsub.Client()
46
+ >>> topic = client.topic(' topic_name' )
41
47
>>> topic.exists() # API request
42
48
True
43
49
44
50
List topics for the default project:
45
51
46
52
.. doctest ::
47
53
48
- >>> from gcloud.pubsub import list_topics
49
- >>> topics, next_page_token = list_topics() # API request
50
- >>> [topic.name for topic in topics]
51
- ['topic_name']
52
-
53
- List topics for an explicit project:
54
-
55
- .. doctest ::
56
-
57
- >>> from gcloud.pubsub import list_topics
58
- >>> topics, next_page_token = list_topics(project = ' my.project' ) # API request
54
+ >>> from gcloud import pubsub
55
+ >>> client = pubsub.Client()
56
+ >>> topics, next_page_token = client.list_topics() # API request
59
57
>>> [topic.name for topic in topics]
60
58
['topic_name']
61
59
62
60
Delete a topic:
63
61
64
62
.. doctest ::
65
63
66
- >>> from gcloud.pubsub import Topic
67
- >>> topic = Topic(' topic_name' )
64
+ >>> from gcloud import pubsub
65
+ >>> client = pubsub.Client()
66
+ >>> topic = client.topic(' topic_name' )
68
67
>>> topic.delete() # API request
69
68
70
69
@@ -75,17 +74,19 @@ Publish a single message to a topic, without attributes:
75
74
76
75
.. doctest ::
77
76
78
- >>> from gcloud.pubsub import Topic
79
- >>> topic = Topic(' topic_name' )
77
+ >>> from gcloud import pubsub
78
+ >>> client = pubsub.Client()
79
+ >>> topic = client.topic(' topic_name' )
80
80
>>> topic.publish(' this is the message_payload' ) # API request
81
81
<message_id>
82
82
83
83
Publish a single message to a topic, with attributes:
84
84
85
85
.. doctest ::
86
86
87
- >>> from gcloud.pubsub import Topic
88
- >>> topic = Topic(' topic_name' )
87
+ >>> from gcloud import pubsub
88
+ >>> client = pubsub.Client()
89
+ >>> topic = client.topic(' topic_name' )
89
90
>>> topic.publish(' this is another message_payload' ,
90
91
... attr1= ' value1' , attr2= ' value2' ) # API request
91
92
<message_id>
@@ -94,8 +95,9 @@ Publish a set of messages to a topic (as a single request):
94
95
95
96
.. doctest ::
96
97
97
- >>> from gcloud.pubsub import Topic
98
- >>> topic = Topic(' topic_name' )
98
+ >>> from gcloud import pubsub
99
+ >>> client = pubsub.Client()
100
+ >>> topic = client.topic(' topic_name' )
99
101
>>> with topic.batch() as batch:
100
102
... batch.publish(' this is the first message_payload' )
101
103
... batch.publish(' this is the second message_payload' ,
@@ -116,93 +118,97 @@ Create a new pull subscription for a topic:
116
118
117
119
.. doctest ::
118
120
119
- >>> from gcloud.pubsub import Topic
120
- >>> from gcloud.pubsub import Subscription
121
- >>> topic = Topic (' topic_name' )
122
- >>> subscription = Subscription(' subscription_name' , topic)
121
+ >>> from gcloud import pubsub
122
+ >>> client = pubsub.Client()
123
+ >>> topic = client.topic (' topic_name' )
124
+ >>> subscription = pubsub. Subscription(' subscription_name' , topic)
123
125
>>> subscription.create() # API request
124
126
125
127
Create a new pull subscription for a topic with a non-default ACK deadline:
126
128
127
129
.. doctest ::
128
130
129
- >>> from gcloud.pubsub import Topic
130
- >>> from gcloud.pubsub import Subscription
131
- >>> topic = Topic (' topic_name' )
132
- >>> subscription = Subscription(' subscription_name' , ack_deadline = 90 )
131
+ >>> from gcloud import pubsub
132
+ >>> client = pubsub.Client()
133
+ >>> topic = client.topic (' topic_name' )
134
+ >>> subscription = pubsub. Subscription(' subscription_name' , ack_deadline = 90 )
133
135
>>> subscription.create() # API request
134
136
135
137
Create a new push subscription for a topic:
136
138
137
139
.. doctest ::
138
140
141
+ >>> from gcloud import pubsub
139
142
>>> ENDPOINT = ' https://example.com/hook'
140
- >>> from gcloud.pubsub import Topic
141
- >>> from gcloud.pubsub import Subscription
142
- >>> topic = Topic( ' topic_name ' )
143
- >>> subscription = Subscription( ' subscription_name ' , push_endpoint = ENDPOINT )
143
+ >>> client = pubsub.Client()
144
+ >>> topic = client.topic( ' topic_name ' )
145
+ >>> subscription = pubsub.Subscription( ' subscription_name ' ,
146
+ ... push_endpoint= ENDPOINT )
144
147
>>> subscription.create() # API request
145
148
146
149
Check for the existence of a subscription:
147
150
148
151
.. doctest ::
149
152
150
- >>> from gcloud.pubsub import Topic
151
- >>> from gcloud.pubsub import Subscription
152
- >>> topic = Topic (' topic_name' )
153
- >>> subscription = Subscription(' subscription_name' , topic)
153
+ >>> from gcloud import pubsub
154
+ >>> client = pubsub.Client()
155
+ >>> topic = client.topic (' topic_name' )
156
+ >>> subscription = pubsub. Subscription(' subscription_name' , topic)
154
157
>>> subscription.exists() # API request
155
158
True
156
159
157
160
Convert a pull subscription to push:
158
161
159
162
.. doctest ::
160
163
164
+ >>> from gcloud import pubsub
161
165
>>> ENDPOINT = ' https://example.com/hook'
162
- >>> from gcloud.pubsub import Topic
163
- >>> from gcloud.pubsub import Subscription
164
- >>> topic = Topic(' topic_name' )
165
- >>> subscription = Subscription(' subscription_name' , topic)
166
+ >>> client = pubsub.Client()
167
+ >>> topic = client.topic(' topic_name' )
168
+ >>> subscription = pubsub.Subscription(' subscription_name' , topic)
166
169
>>> subscription.modify_push_configuration(push_endpoint = ENDPOINT ) # API request
167
170
168
171
Convert a push subscription to pull:
169
172
170
173
.. doctest ::
171
174
175
+ >>> from gcloud import pubsub
172
176
>>> ENDPOINT = ' https://example.com/hook'
173
- >>> from gcloud.pubsub import Topic
174
- >>> topic = Topic (' topic_name' )
175
- >>> subscription = Subscription(' subscription_name' , topic,
176
- ... push_endpoint= ENDPOINT )
177
+ >>> client = pubsub.Client()
178
+ >>> topic = client.topic (' topic_name' )
179
+ >>> subscription = pubusb. Subscription(' subscription_name' , topic,
180
+ ... push_endpoint= ENDPOINT )
177
181
>>> subscription.modify_push_configuration(push_endpoint = None ) # API request
178
182
179
183
List subscriptions for a topic:
180
184
181
185
.. doctest ::
182
186
183
- >>> from gcloud.pubsub import Topic
184
- >>> topic = Topic(' topic_name' )
185
- >>> subscriptions, next_page_token = topic.list_subscriptions() # API request
187
+ >>> from gcloud import pubsub
188
+ >>> client = pubsub.Client()
189
+ >>> subscriptions, next_page_token = client.list_subscriptions(
190
+ ... topic_name= ' topic_name' ) # API request
186
191
>>> [subscription.name for subscription in subscriptions]
187
192
['subscription_name']
188
193
189
194
List all subscriptions for the default project:
190
195
191
196
.. doctest ::
192
197
193
- >>> from gcloud.pubsub import list_subscriptions
194
- >>> subscription, next_page_tokens = list_subscriptions() # API request
198
+ >>> from gcloud import pubsub
199
+ >>> client = pubsub.Client()
200
+ >>> subscription, next_page_tokens = client.list_subscriptions() # API request
195
201
>>> [subscription.name for subscription in subscriptions]
196
202
['subscription_name']
197
203
198
204
Delete a subscription:
199
205
200
206
.. doctest ::
201
207
202
- >>> from gcloud.pubsub import Topic
203
- >>> from gcloud.pubsub import Subscription
204
- >>> topic = Topic (' topic_name' )
205
- >>> subscription = Subscription(' subscription_name' , topic)
208
+ >>> from gcloud import pubsub
209
+ >>> client = pubsub.Client()
210
+ >>> topic = client.topic (' topic_name' )
211
+ >>> subscription = pubsub. Subscription(' subscription_name' , topic)
206
212
>>> subscription.delete() # API request
207
213
208
214
@@ -213,13 +219,13 @@ Fetch pending messages for a pull subscription:
213
219
214
220
.. doctest ::
215
221
216
- >>> from gcloud.pubsub import Topic
217
- >>> from gcloud.pubsub import Subscription
218
- >>> topic = Topic (' topic_name' )
219
- >>> subscription = Subscription(' subscription_name' , topic)
220
- >>> with topic:
221
- ... topic .publish(' this is the first message_payload' )
222
- ... topic .publish(' this is the second message_payload' ,
222
+ >>> from gcloud import pubsub
223
+ >>> client = pubsub.Client()
224
+ >>> topic = client.topic (' topic_name' )
225
+ >>> subscription = pubsub. Subscription(' subscription_name' , topic)
226
+ >>> with topic.batch() as batch :
227
+ ... batch .publish(' this is the first message_payload' )
228
+ ... batch .publish(' this is the second message_payload' ,
223
229
... attr1= ' value1' , attr2= ' value2' )
224
230
>>> received = subscription.pull() # API request
225
231
>>> messages = [recv[1 ] for recv in received]
@@ -242,13 +248,13 @@ Fetch a limited number of pending messages for a pull subscription:
242
248
243
249
.. doctest ::
244
250
245
- >>> from gcloud.pubsub import Topic
246
- >>> from gcloud.pubsub import Subscription
247
- >>> topic = Topic (' topic_name' )
248
- >>> subscription = Subscription(' subscription_name' , topic)
249
- >>> with topic:
250
- ... topic .publish(' this is the first message_payload' )
251
- ... topic .publish(' this is the second message_payload' ,
251
+ >>> from gcloud import pubsub
252
+ >>> client = pubsub.Client()
253
+ >>> topic = client.topic (' topic_name' )
254
+ >>> subscription = pubsub. Subscription(' subscription_name' , topic)
255
+ >>> with topic.batch() as batch :
256
+ ... batch .publish(' this is the first message_payload' )
257
+ ... batch .publish(' this is the second message_payload' ,
252
258
... attr1= ' value1' , attr2= ' value2' )
253
259
>>> received = subscription.pull(max_messages = 1 ) # API request
254
260
>>> messages = [recv[1 ] for recv in received]
@@ -258,10 +264,10 @@ Fetch messages for a pull subscription without blocking (none pending):
258
264
259
265
.. doctest ::
260
266
261
- >>> from gcloud.pubsub import Topic
262
- >>> from gcloud.pubsub import Subscription
263
- >>> topic = Topic (' topic_name' )
264
- >>> subscription = Subscription(' subscription_name' , topic)
267
+ >>> from gcloud import pubsub
268
+ >>> client = pubsub.Client()
269
+ >>> topic = client.topic (' topic_name' )
270
+ >>> subscription = pubsub. Subscription(' subscription_name' , topic)
265
271
>>> received = subscription.pull(max_messages = 1 ) # API request
266
272
>>> messages = [recv[1 ] for recv in received]
267
273
>>> [message.id for message in messages]
0 commit comments