Ho utilizzato open_uri
per trascinare un percorso ftp come origine dati per un po 'di tempo, ma all'improvviso ho scoperto che sto diventando quasi continuo "530 Scusa, il numero massimo di client consentiti (95) è già collegato."Fa 'open_uri' Ruby chiude correttamente le prese dopo la lettura o in caso di errore?
Non sono sicuro se il mio codice è difettoso o se è qualcun altro che sta accedendo al server e sfortunatamente non c'è modo per me di sembrare davvero sicuro di chi è in errore.
In sostanza io sto leggendo FTP URI con:
def self.read_uri(uri)
begin
uri = open(uri).read
uri == "Error" ? nil : uri
rescue OpenURI::HTTPError
nil
end
end
Sto indovinando che ho bisogno di aggiungere un po 'che gestisce il codice qui errore aggiuntivo ... io voglio essere sicuro che prendo tutte le precauzioni per chiudere tutte le connessioni in modo che le mie connessioni non siano il problema in questione, tuttavia ho pensato che open_uri + read avrebbe preso questa precauzione contro usando i metodi Net :: FTP.
La linea di fondo è che devo essere sicuro al 100% che queste connessioni siano chiuse e non ho in qualche modo un mucchio di connessioni aperte in giro.
Qualcuno può consigliare di utilizzare correttamente read_uri per accedere a ftp con la garanzia che sta chiudendo la connessione? O dovrei spostare la logica su Net :: FTP che potrebbe dare più controllo sulla situazione se open_uri non è abbastanza robusto?
Se invece devo usare i metodi Net :: FTP, c'è un metodo di lettura che dovrei avere familiarità con vs tirarlo giù in una posizione tmp e quindi leggerlo (come preferirei mantenere se possibile in un buffer vs fs)?
io non sono a conoscenza 'read_uri' e sto avendo un tempo sorprendentemente difficile trovare risultati di ricerca. Ti dispiace condividere uno snippet di codice che richiede e/o lo usa? –
LOL, mi dispiace. Ho scritto questo codice alcuni mesi fa e ho dimenticato di aver definito read_uri come segue (rendendomi conto di aver aggiunto più gestione degli errori: http://j.mp/tNHpmr – ylluminate
Supponendo che tu non abbia Windows probabilmente vedrai cosa sta succedendo da te con l'esecuzione di "netstat" nel prompt dei comandi – sunkencity