Skip to content

Commit fbb2f8a

Browse files
authored
Adds backoff / retry to HTTP calls. (#545)
* Adds backoff / retry to HTTP calls. * Switches request library from requestretry to retry-request.
1 parent 5cb34c0 commit fbb2f8a

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

iot/http_example/cloudiot_http_example.js

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
// [START iot_http_includes]
1818
const fs = require('fs');
1919
const jwt = require('jsonwebtoken');
20-
const request = require('request');
20+
const request = require('retry-request');
2121
// [END iot_http_includes]
2222

2323
console.log('Google Cloud IoT Core HTTP example.');
@@ -141,19 +141,28 @@ function publishAsync (authToken, messageCount, numMessages) {
141141
binary_data: binaryData
142142
}
143143
};
144+
144145
const options = {
145146
url: url,
146147
headers: {
147148
'authorization': `Bearer ${authToken}`,
148149
'content-type': 'application/json',
149150
'cache-control': 'no-cache'
150151
},
152+
body: postData,
151153
json: true,
152-
body: postData
154+
method: 'POST',
155+
retries: 5,
156+
shouldRetryFn:
157+
function (incomingHttpMessage) {
158+
return incomingHttpMessage.statusMessage !== 'OK';
159+
}
153160
};
161+
154162
// Send events for high-frequency updates, update state only occasionally.
155163
const delayMs = argv.messageType === 'events' ? 1000 : 2000;
156-
request.post(options, function (error, response, body) {
164+
console.log(JSON.stringify(request));
165+
request(options, function (error, response, body) {
157166
if (error) {
158167
console.error('Received error: ', error);
159168
} else if (response.body.error) {
@@ -182,6 +191,7 @@ function publishAsync (authToken, messageCount, numMessages) {
182191
// [START iot_http_getconfig]
183192
function getConfig (authToken, version) {
184193
console.log(`Getting config from URL: ${urlBase}`);
194+
185195
const options = {
186196
url: urlBase + '/config?local_version=' + version,
187197
headers: {
@@ -190,9 +200,16 @@ function getConfig (authToken, version) {
190200
'cache-control': 'no-cache'
191201

192202
},
193-
json: true
203+
json: true,
204+
retries: 5,
205+
shouldRetryFn:
206+
function (incomingHttpMessage) {
207+
console.log('Retry?');
208+
return incomingHttpMessage.statusMessage !== 'OK';
209+
}
194210
};
195-
request.get(options, function (error, response, body) {
211+
console.log(JSON.stringify(request.RetryStrategies));
212+
request(options, function (error, response, body) {
196213
if (error) {
197214
console.error('Received error: ', error);
198215
} else if (response.body.error) {

iot/http_example/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
"@google-cloud/pubsub": "0.13.2",
1515
"@google-cloud/nodejs-repo-tools": "1.4.17",
1616
"ava": "0.22.0",
17-
"yargs": "8.0.2",
1817
"jsonwebtoken": "7.4.1",
19-
"request": "2.82.0",
20-
"uuid": "3.1.0"
18+
"retry-request": "3.3.1",
19+
"uuid": "3.1.0",
20+
"yargs": "8.0.2"
2121
},
2222
"testDependencies": {
2323
},

0 commit comments

Comments
 (0)