def make_request(self, action, body='', callback=None, object_hook=None):
    this_request = functools.partial(self.make_request, action=action,
                                     body=body, callback=callback, object_hook=object_hook)
    if self.authenticate_requests and self.provider.security_token in [None, PENDING_SESSION_TOKEN_UPDATE]:
      # we will not be able to complete this request because we do not have a valid session token.
      # queue it and try to get a new one. _update_session_token will ensure that only one request
      # for a session token goes out at a time
      self.pending_requests.appendleft(this_request)
      def cb_for_update(error=None):
        # create a callback to handle errors getting session token
        # callback here is assumed to take a json response, and an instance of DynamoDBResponseError
        if error:
          raise DynamoDBResponseError(error.status, error.reason, body={'message': error.body})
        else:
          return
      self._update_session_token(cb_for_update)
      return
    headers = {'X-Amz-Target' : '%s_%s.%s' % (self.ServiceName, self.Version, action),
               'Content-Type' : 'application/x-amz-json-1.0',
               'Content-Length' : str(len(body))}
    request = HTTPRequest('https://%s' % self.host,
                          method='POST',
                          headers=headers,
                          body=body,
                          validate_cert=self.validate_cert)
    request.path = '/' # Important! set the path variable for signing by boto. '/' is the path for all dynamodb requests
    if self.authenticate_requests:
      self._auth_handler.add_auth(request) # add signature to headers of the request

    http_client = httpclient.AsyncHTTPClient()
    http_client.fetch(request, functools.partial(
      self._finish_make_request, callback=callback, orig_request=this_request,
      token_used=self.provider.security_token, object_hook=object_hook))
Make an asynchronous HTTP request to DynamoDB. Callback should
dataset/ETHPy150Open viewfinderco/viewfinder/backend/db/asyncdynamo.py/AsyncDynamoDB.make_request