Domanda

Recentemente sto studiando la libreria client smtplib smtp per Python, ma non ho potuto trovare alcun riferimento al protocollo PIPELINING contro i server SMTP che lo supportano. C'è qualcosa che mi manca? Non è ancora implementata forse? Eventuali altre implementazioni, piuttosto che smtplib con PIPELINING abilitati?

Grazie

È stato utile?

Soluzione

  

C'è qualcosa che mi manca?

Molto probabilmente.

In poche parole PIPELINING sta inviando comandi SMTP senza attendere le risposte. Essa non tende a essere attuato perché i benefici sono marginali e aumenta la complessità di stati di errore.

Dal tuo commento, sembra come se siete preoccupati che un solo messaggio verrà inviato attraverso una connessione. Questo non è PIPELINING.

supporti smtplib utilizzando la stessa connessione per più messaggi. Si può solo chiamare sendmail più volte. Per es.

s = smtplib.SMTP("localhost")
s.sendmail("foo@bar.baz",["bar@foo.baz"],message1)
s.sendmail("foo@bar.baz",["baz@foo.baz"],message2)

Aggiornamento finale

  

che è il numero massimo di messaggi che posso aggiungere "per-connection"?

Questa varia tra i demoni SMTP. Exim sembra di default a 1000.

  

devo fare questo in modo sincrono o non smtplib eventualmente gestire le chiamate di sendmail contemporanea?

La chiamata al metodo sendmail bloccherà fino al completo, le chiamate saranno sequenziali.

Se avete bisogno di parallelizzare allora si potrebbe aver bisogno di guardare threading, multiprocessing o forse contorto. Ci sono molti approcci possibili.

Il numero di connessioni simultanee si è permesso può anche essere un elemento di configurazione del demone SMTP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top