Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const rp = require('request-promise');
- const maxAttemptsCount = 2;
- const REPEAT_TIMEOUT = 5;
- const rest_url = 'https://ya.ru/xxx';
- async function sleep(millis) {
- return new Promise(resolve => setTimeout(resolve, millis));
- }
- function req( options ) { // await not need - function return promise
- return rp( options )
- .then(function (result) {
- // Process html...
- return result;
- })
- .catch(function (err) {
- // Crawling failed...
- //console.error('Req exception =>',err);
- return err;
- });
- }
- async function reqWrapper( id, options ) {
- let n = 1;
- let result;
- while ( n < maxAttemptsCount ) {
- let prefix = id + ' # loop ' + n + '/' + maxAttemptsCount + ' => ';
- result = await req( options );
- //console.log(prefix,'after await req=',result);
- if ( result.statusCode > 400 ) {
- //console.error(prefix,result.message,'Wait for =>',REPEAT_TIMEOUT,'seconds and repeat');
- await sleep(5 * 1000);
- } else {
- //console.log(prefix,result.result['ID'],'=>',result.result['TITLE']);
- if ( n>1 ) {
- console.log(prefix,'Good result after ',n, 'try');
- }
- return result;
- }
- n++;
- }
- return result;
- }
- const threads = 1;
- for ( let n=1;n<=threads;n++ ) {
- let options = {
- uri: rest_url + 'crm.company.get',
- qs : {
- id: 9267
- },
- json: true
- }
- let prefix = 'Thread ' + n + '/' + threads;
- let res = reqWrapper( prefix, options )
- .then(function(result) {
- //console.log(result);
- if ( result.message ) {
- console.error(prefix,' Error => ',result.message);
- } else {
- console.log(prefix,'OK =>',result.result['ID'],'=>',result.result['TITLE']);
- }
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement