title: Python requests.exceptions.ChunkedEncodingError
body: <p>I am writing a python script that does these steps below.</p>
  
  <ul>
  <li>Query a MongoDB database</li>
  <li>Parse and aggregate results</li>
  <li>Upload data to a ServiceNow table via a REST API</li>
  </ul>
  
  <p>This works most of the time but occasionally I see this error:</p>
  
  <pre><code>requests.exceptions.ChunkedEncodingError: ("Connection broken: error(104, 'Connection reset by peer')", error(104, 'Connection reset by peer'))
  </code></pre>
  
  <p>This error stops the script and prevents the entire data set from being captured.</p>
  
  <p>What can I do to alleviate this issue?</p>
  
  <p>Python 2.7.5</p>
  
  <p>Code</p>
  
  <pre><code>#!/usr/bin/env python
  
  from config import *
  
  import os, sys
  
  mypath = os.path.dirname(os.path.realpath(__file__))
  sys.path.append(os.path.join(mypath, "api-python-client"))
  
  from apiclient.mongo import *
  
  from pymongo import MongoClient
  
  import json
  
  import requests
  
  from bson.json_util import dumps
  
  client = MongoClient(mongo_uri)
  
  #Create ServiceNow URL
  svcnow_url = create_svcnow_url('u_imp_cmps')
  
  #BITSDB Nmap Collection
  db = client[mongo_db]
  
  #Aggregate - RDBMS equivalent to Alias select x as y
  #Rename fields to match ServiceNow field names
  computers = db['computer'].aggregate([
          {"$unwind": "$hostnames"},
          {"$project" : {
                  "_id":0,
                  "u_hostname": "$hostnames.name",
                  "u_ipv4": "$addresses.ipv4",
                  "u_status": "$status.state",
                  "u_updated_timestamp": "$last_seen"
          }}
  
  ])
  
  j = dumps({"records":computers})
  #print(j)
  
  
  #Set proper headers
  headers = {"Content-Type":"application/json","Accept":"application/json"}
  
  #Build HTTP Request
  response = requests.post(url=svcnow_url, auth=(svcnow_user, svcnow_pwd), headers=headers ,data=j)
  
  #Check for HTTP codes other than 200
  if response.status_code != 200:
          print('Status:', response.status_code, 'Headers:', response.headers, 'Response Text', response.text, 'Error Response:',response.json())
          exit()
  
  #Decode the JSON response into a dictionary and use the data
  print('Status:',response.status_code,'Headers:',response.headers,'Response:',response.json())
  </code></pre>
  
  <p>Error</p>
  
  <pre><code>Traceback (most recent call last):
    File "/usr/src/computer_pingable_import.py", line 50, in &lt;module&gt;
      response = requests.post(url=svcnow_url, auth=(svcnow_user, svcnow_pwd), headers=headers ,data=j)
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 107, in post
      return request('post', url, data=data, json=json, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 53, in request
      return session.request(method=method, url=url, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 468, in request
      resp = self.send(prep, **send_kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 608, in send
      r.content
    File "/usr/local/lib/python2.7/site-packages/requests/models.py", line 737, in content
      self._content = bytes().join(self.iter_content(CONTENT_CHUNK_SIZE)) or bytes()
    File "/usr/local/lib/python2.7/site-packages/requests/models.py", line 663, in generate
      raise ChunkedEncodingError(e)
  requests.exceptions.ChunkedEncodingError: ("Connection broken: error(104, 'Connection reset by peer')", error(104, 'Connection reset by peer'))
  </code></pre>
  
  <p>Another attempt and a slightly different error message:</p>
  
  <pre><code>Traceback (most recent call last):
    File "/usr/src/computer_pingable_import.py", line 50, in &lt;module&gt;
      response = requests.post(url=svcnow_url, auth=(svcnow_user, svcnow_pwd), headers=headers ,data=j)
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 107, in post
      return request('post', url, data=data, json=json, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 53, in request
      return session.request(method=method, url=url, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 468, in request
      resp = self.send(prep, **send_kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
      r = adapter.send(request, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 426, in send
      raise ConnectionError(err, request=request)
  requests.exceptions.ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer'))
  </code></pre>