Per qualche motivo, sul mio computer di sviluppo ricevo risposte molto, molto lente per le richieste HTTPS eseguite tramite Net :: HTTP. Ho provato RestClient e HTTParty e hanno entrambi lo stesso problema. Sembra che sia spuntato dal nulla. Ho fatto queste richieste centinaia di volte senza problemi, ma oggi sono insopportabilmente lenti.Net :: HTTP risposte estremamente lente per richieste HTTPS
pry(main)> puts Time.now; HTTParty.get('https://api.easypost.com/v2/addresses'); puts Time.now;
2015-04-29 08:07:08 -0500
2015-04-29 08:09:39 -0500
Come si può vedere, la risposta è durata 2,5 minuti. E non è solo questo URL dell'API EasyPost. Ho provato numerose richieste SSL ai server che so di potermi connettere (https://google.com, https://weather.com, ecc.) E tutti hanno lo stesso comportamento. Inoltre, ho notato che la stessa cosa accade per le richieste che vengono reindirizzate da HTTP a HTTPS. Ora, controlla una richiesta non-ssl:
pry(main)> puts Time.now; HTTParty.get('http://lookitsatravis.com'); puts Time.now;
2015-04-29 08:12:22 -0500
2015-04-29 08:12:22 -0500
Istantaneo. Cosa dà? Suppongo che ci sia qualche problema di configurazione tra Ruby e OpenSSL. Ho reinstallato entrambi (usando Ruby 2.2.1 e OpenSSL 1.0.2a) e sto usando OS X Yosemite 10.10.2 per quello che vale. Reinstallato tutte le mie gemme, ma il problema persiste. Ho provato a cambiare le mie impostazioni DNS per ogni evenienza, ma senza dadi. C'è un altro posto che posso guardare o una configurazione che posso modificare che risolverà questo problema?
Potrebbe essere un problema di rete, ad esempio un middlebox che esegue il traffic shaping. Controllare con altri software della stessa macchina per vedere se è specifico per la macchina o realmente accade solo con rubino. –
@SteffenUllrich Ho appena controllato cURL/wget/Postman ... cURL e Postman funzionano bene, ma wget non funziona. Ha lo stesso identico comportamento. È interessante notare che wget tenta di connettersi prima all'indirizzo IPv6 che non riesce. Quando si collega all'indirizzo IPv4, viene completato immediatamente. Quindi, credo che il problema sia con IPv6 in qualche modo ... – lookitsatravis
Grazie a @SteffenUllrich - è stato IPv6 a causare il problema. Disabilitarlo ha risolto il problema. – lookitsatravis