2017-02-03 19 views
1

Мне нужно проверить много электронных писем, тысячи писем. Я использую smtplib, чтобы сделать это, и у меня есть некоторые проблемы. Это занимает слишком много времени (хотя я использую многопроцессорность и как обычно 32 процесса). И иногда у меня есть ошибка для какого-либо сообщения электронной почты (тайм-аут) или другой ошибки, и я не принимаю никакого результата для этого. Но если я заработаю его снова, я не получу ошибку, но могу получить ошибки для другого письма. Что я делаю неправильно в своем коде и как я могу улучшить это, чтобы иметь больше точности и меньше ошибок.Python: как проверить почту с smtplib быстрее

def check_email(email, mxRecord): 
      time.sleep(2) 
      host = socket.gethostname() 
      try: 
       server = smtplib.SMTP() 
       server.set_debuglevel(0) 
       addressToVerify = email 
       server.connect(mxRecord) 
       server.helo(host) 
       server.mail('[email protected]') 
       code, message = server.rcpt(str(addressToVerify)) 
       server.quit() 
       if code == 250: 
        res_email = email 
        res = str(num) + ' ' + str(res_email) 
        print res 
        return res 
       else: 
        continue 
      except: 
       continue 

ответ

0

вы просто цикл throu всей почты в той же время использование многопоточности ...

def check_email(email, mxRecord): 
     time.sleep(2) 
     host = socket.gethostname() 
     for line, line 1 in itertools.izip(email, mxRecord) 
      try: 
       server = smtplib.SMTP() 
       server.set_debuglevel(0) 
       addressToVerify = email 
       server.connect(mxRecord) 
       server.helo(host) 
       server.mail('[email protected]') 
       code, message = server.rcpt(str(addressToVerify)) 
       server.quit() 
       if code == 250: 
         res_email = email 
         res = str(num) + ' ' + str(res_email) 
         print res 
         return res 
       else: 
        continue 
       except: 
        continue 

m = threading.Thread(name='daemon', target=check_email(email,mxRecord)) 
m.setDaemon(True) 
m.start() 

sould выглядеть следующим образом

+0

Что такое 'имя = 'daemon'? –

+0

deamon from theading do import threading deamon начинает проверять каждый адрес электронной почты, mxRecord – minime

+0

Я использую «многопроцессорство» для параллелизма. Или это что-то другое? –

 Смежные вопросы

  • Нет связанных вопросов^_^