Request: Solicite obtener ESOCKETTIMEDOUT constantemente cuando todos los demás clientes trabajen (http://www.bestbuy.com)

Creado en 10 ago. 2017  ·  6Comentarios  ·  Fuente: request/request

Hola,

muy fácil de reproducir y siempre sucede!

const request = require('request');
const axios = require('axios');
const url = 'http://www.bestbuy.com/';
request({
    url: url,
    timeout: 5000
}, (error, response, body) => {
    if (!error)
        console.log(`request got ${response.statusCode}`);
    else
        console.error(`request got an error`, error);
});

axios.get(url).then((ret) => {
    console.log(`Axios got ${ret.status}`);
});

salidas:

Axios got 200
request got an error { Error: ESOCKETTIMEDOUT
    at ClientRequest.<anonymous> (/Users/amir/dev/test/testVideosFb/node_modules/request/request.js:819:19)
    at Object.onceWrapper (events.js:293:19)
    at emitNone (events.js:86:13)
    at ClientRequest.emit (events.js:188:7)
    at Socket.emitTimeout (_http_client.js:679:10)
    at Object.onceWrapper (events.js:293:19)
    at emitNone (events.js:86:13)
    at Socket.emit (events.js:188:7)
    at Socket._onTimeout (net.js:345:8)
    at ontimeout (timers.js:380:14) code: 'ESOCKETTIMEDOUT', connect: false }

Mi entorno es el nodo 7.7.2 / 8.3.0 y [email protected]

stale

Comentario más útil

Creo que bestbuy.com puede estar bloqueando la solicitud debido a que los encabezados predeterminados se envían desde la solicitud. Si la solicitud se realiza con los mismos encabezados que envía la solicitud de axios, no se agota el tiempo de espera:

const request = require('request');
const axios = require('axios');
const url = 'http://www.bestbuy.com/';
request({
  url: url,
  timeout: 5000,
  headers: {
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "axios/0.18.0"
  }
}, (error, response, body) => {
  if (!error)
    console.log(`request got ${response.statusCode}`);
  else
    console.error(`request got an error`, error);
});

axios.get(url).then((ret) => {
  console.log(`Axios got ${ret.status}`);
});

Todos 6 comentarios

Sería bueno tener algunos comentarios sobre este problema de ESOCKETTIMEOUT, ya que yo también lo recibí y no encontré ninguna forma de resolver este problema sin cambiar este módulo.

¿ESOCKETTIMEOUT está relacionado con un problema con la agrupación de sockets? Pensé tan así que deshabilité la agrupación de sockets en el nodo con

`var http = require ('http');
http.globalAgent.maxSockets = Infinito;

var https = require ('https');
https.globalAgent.maxSockets = Infinito; `

pero no cambió nada acerca de no obtener ESOCKETTIMEOUT a alguien como una solución para este error?

el mismo problema para mi

Descubrí que si hay demasiadas solicitudes asíncronas, la excepción ESOCKETTIMEDOUT ocurre en Linux. La solución alternativa que encontré es hacer esto:

configurando estas opciones en request ():

agent: false, pool: {maxSockets: 100}

Tenga en cuenta que después de eso, el tiempo de espera puede estar mintiendo, por lo que es posible que deba aumentarlo.

Mismo problema aquí +1
agent: false, pool: {maxSockets: 100} no ayudó

Creo que bestbuy.com puede estar bloqueando la solicitud debido a que los encabezados predeterminados se envían desde la solicitud. Si la solicitud se realiza con los mismos encabezados que envía la solicitud de axios, no se agota el tiempo de espera:

const request = require('request');
const axios = require('axios');
const url = 'http://www.bestbuy.com/';
request({
  url: url,
  timeout: 5000,
  headers: {
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "axios/0.18.0"
  }
}, (error, response, body) => {
  if (!error)
    console.log(`request got ${response.statusCode}`);
  else
    console.error(`request got an error`, error);
});

axios.get(url).then((ret) => {
  console.log(`Axios got ${ret.status}`);
});

Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Gracias por sus aportaciones.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ghost picture ghost  ·  3Comentarios

mlegenhausen picture mlegenhausen  ·  4Comentarios

codecowboy picture codecowboy  ·  3Comentarios

chenby picture chenby  ·  3Comentarios

xin7c picture xin7c  ·  3Comentarios