sendgrid / sendgrid-python

The Official Twilio SendGrid Python API Library

Home Page:https://sendgrid.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DNS Timeout?

void4 opened this issue · comments

commented

Issue Summary

Using the latest version (6.9.5) of sendgrid-python, sometimes, sending an email doesn't work, apparently due to a DNS lookup timeout.

Steps to Reproduce

Install 6.9.5

Code Snippet

def send():
    to_email = To("test@test.com")
    subject = "test"
    content = Content("text/plain", "test")
    mail = Mail(from_email, to_email, subject, content)
    response = sg.client.mail.send.post(request_body=mail.get())

Exception/Log

Traceback (most recent call last):                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 426, 
in resolve                                                                                               
    return _proxy.query(name, rdtype, raise_on_no_answer=raises,                                         
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 382, 
in query                                                                                                 
    return end()                                                                                         
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 361, 
in end                                                                                                   
    raise result[1]                                                                                      
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 342, 
in step                                                                                                  
    a = fun(*args, **kwargs)                                                                             
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/dns/resolver.py", line 1222, in query    
    return self.resolve(qname, rdtype, rdclass, tcp, source,                                             
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/dns/resolver.py", line 1176, in resolve  
    timeout = self._compute_timeout(start, lifetime)                                                     
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/dns/resolver.py", line 997, in _compute_t
imeout
    raise Timeout(timeout=duration)
dns.exception.Timeout: The DNS operation timed out after 5.103812217712402 seconds
                                                                                                       
During handling of the above exception, another exception occurred:                                      
                                                                                                         
Traceback (most recent call last):                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 1319, in do_open              
    h.request(req.get_method(), req.selector, req.data, headers,                                         
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1230, in request                 
    self._send_request(method, url, body, headers, encode_chunked)                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1276, in _send_request           
    self.endheaders(body, encode_chunked=encode_chunked)                                                 
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1225, in endheaders              
    self._send_output(message_body, encode_chunked=encode_chunked)                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1004, in _send_output            
    self.send(msg)                                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 944, in send                     
    self.connect()                                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1392, in connect
    super().connect()
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 915, in connect
    self.sock = self._create_connection(
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/socket.py", line 787, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 519, 
in getaddrinfo
    qname, addrs = _getaddrinfo_lookup(host, family, flags)
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 492, 
in _getaddrinfo_lookup                                                                          [66/1821]
    answer = resolve(host, qfamily, False, use_network=use_network)                                      
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 434, 
in resolve                                                                                               
    raise EAI_EAGAIN_ERROR                                                                               
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 481, 
in _getaddrinfo_lookup                                                                                   
    answer = resolve(host, qfamily, False, use_network=use_network)                                      
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 434, 
in resolve                                                                                               
    raise EAI_EAGAIN_ERROR                                                                               
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 1319, in do_open              
    h.request(req.get_method(), req.selector, req.data, headers,                                         
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1230, in request                 
    self._send_request(method, url, body, headers, encode_chunked)                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1276, in _send_request           
    self.endheaders(body, encode_chunked=encode_chunked)                                                 
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1225, in endheaders              
    self._send_output(message_body, encode_chunked=encode_chunked)                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1004, in _send_output            
    self.send(msg)                                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 944, in send                     
    self.connect()                                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1392, in connect  
    self.connect()                                                                              [44/1821]
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 1392, in connect                 
    super().connect()                                                                                    
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/http/client.py", line 915, in connect                  
    self.sock = self._create_connection(                                                                 
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/socket.py", line 787, in create_connection             
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):                                                  
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 519, 
in getaddrinfo                                                                                           
    qname, addrs = _getaddrinfo_lookup(host, family, flags)                                              
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 492, 
in _getaddrinfo_lookup                                                                                   
    raise err                                                                                            
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 481, 
in _getaddrinfo_lookup                                                                                   
    answer = resolve(host, qfamily, False, use_network=use_network)                                      
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 434, 
in resolve                                                                                               
    raise EAI_EAGAIN_ERROR                                                                               
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 481, 
in _getaddrinfo_lookup                                                                                   
    answer = resolve(host, qfamily, False, use_network=use_network)                                      
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 434, 
in resolve 
    raise EAI_EAGAIN_ERROR                                                                      [26/1821]
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 481, 
in _getaddrinfo_lookup                                                                                   
    answer = resolve(host, qfamily, False, use_network=use_network)                                      
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/eventlet/support/greendns.py", line 434, 
in resolve                                                                                               
    raise EAI_EAGAIN_ERROR                                                                               
socket.gaierror: [Errno -3] Lookup timed out                                                             
                                                                                                         
During handling of the above exception, another exception occurred:                                      
                                                                                                         
Traceback (most recent call last):                                                                       
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/flask/app.py", line 2070, in wsgi_app    
    response = self.full_dispatch_request()                                                              
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/flask/app.py", line 1515, in full_dispatc
h_request                                                                                                
    rv = self.handle_user_exception(e)                                                                   
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/flask/app.py", line 1513, in full_dispatc
h_request                                                                                                
    rv = self.dispatch_request()    
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/flask/app.py", line 1499, in dispatch_req
uest                                                                                                     
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)                         
  File "/home/icebergcharts/main.py", line 1281, in r_passwordresetPOST                                  
    reset_email(user["email"], pwreset["link"])                                                          
  File "/home/icebergcharts/main.py", line 1294, in reset_email                                          
    response = sg.client.mail.send.post(request_body=mail.get())                                         
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/python_http_client/client.py", line 277, in http_request
    self._make_request(opener, request, timeout=timeout)
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/site-packages/python_http_client/client.py", line 176, in _make_request
    return opener.open(request, timeout=timeout)
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 525, in open
    response = self._open(req, data)
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 542, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 502, in _call_chain
    result = func(*args)
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 1362, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "/root/.pyenv/versions/3.8.2/lib/python3.8/urllib/request.py", line 1322, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno -3] Lookup timed out>

Technical details:

  • sendgrid-python version: 6.9.5
  • python version: 3.8.2

Doesn't look like an issue with the helper. In order to properly help with this request, please file a support ticket.