Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const rp = require('request-promise');
  2.  
  3. const maxAttemptsCount = 2;
  4. const REPEAT_TIMEOUT = 5;
  5.  
  6. const rest_url = 'https://ya.ru/xxx';
  7.  
  8. async function sleep(millis) {
  9.     return new Promise(resolve => setTimeout(resolve, millis));
  10. }
  11.  
  12. function req( options ) { // await not need - function return promise
  13.     return rp( options )
  14.         .then(function (result) {
  15.             // Process html...
  16.             return result;
  17.         })
  18.         .catch(function (err) {
  19.             // Crawling failed...
  20.             //console.error('Req exception =>',err);
  21.             return err;
  22.         });
  23. }
  24.  
  25. async function reqWrapper( id, options ) {
  26.     let n = 1;
  27.     let result;
  28.     while ( n < maxAttemptsCount ) {
  29.         let prefix = id + ' # loop ' + n + '/' + maxAttemptsCount + ' => ';
  30.  
  31.         result = await req( options );
  32.  
  33.         //console.log(prefix,'after await req=',result);
  34.  
  35.         if ( result.statusCode > 400 ) {
  36.             //console.error(prefix,result.message,'Wait for =>',REPEAT_TIMEOUT,'seconds and repeat');
  37.             await sleep(5 * 1000);
  38.         } else {
  39.             //console.log(prefix,result.result['ID'],'=>',result.result['TITLE']);
  40.             if ( n>1 ) {
  41.                 console.log(prefix,'Good result after ',n, 'try');
  42.             }
  43.             return result;
  44.         }
  45.         n++;
  46.     }
  47.     return result;
  48. }
  49.  
  50. const threads = 1;
  51. for ( let n=1;n<=threads;n++ ) {
  52.     let options = {
  53.         uri: rest_url + 'crm.company.get',
  54.         qs : {
  55.             id: 9267
  56.         },
  57.         json: true
  58.     }
  59.  
  60.     let prefix = 'Thread ' + n + '/' + threads;
  61.     let res = reqWrapper( prefix, options )
  62.         .then(function(result) {
  63.             //console.log(result);
  64.             if ( result.message ) {
  65.                 console.error(prefix,' Error => ',result.message);
  66.             } else {
  67.                 console.log(prefix,'OK =>',result.result['ID'],'=>',result.result['TITLE']);
  68.             }
  69.         })
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement