async def post_data(self, data):
        headers = {"Content-Length": len(data)}
        headers.update(self.request_headers)

        http_client = AsyncHTTPClient()
        retry_client = RetryClient(
            http_client=http_client,
            retry_attempts=3,
            retry_start_timeout=0.5,
            retry_max_timeout=10,
            retry_factor=2,
        )

        try:
            response = await retry_client.fetch(
                self.endpoint_url,
                method="POST",
                headers=headers,
                body=data,
                raise_error=False,
            )

        finally:
            http_client.close()

        if 500 <= response.code < 600:
            raise ValueError(response.code + ": " + response.body)

        if response.code < 200 or response.code >= 300:
            raise ValueError(
                "Error sending report to Engine servers (HTTP status {}): {}".
                format(response.code, response.body))

        if self.options.debug_print_reports:
            LOGGER.info("Engine report: status " + response.code)
예제 #2
0
 def setUp(self):
     super(TestRetryClient, self).setUp()
     self.logger = MagicMock()
     self.retry_client = RetryClient(
         self.http_client,
         max_retries=5,
         retry_start_timeout=0,
         logger=self.logger,
         retry_for_statuses=(408, ),
     )
예제 #3
0
 def test_with_default_http_client(self):
     self.assertEqual(RetryClient().http_client, AsyncHTTPClient())
예제 #4
0
 def setUp(self):
     super(TestRetryClient, self).setUp()
     self.retry_client = RetryClient(self.http_client,
                                     max_retries=5,
                                     retry_start_timeout=0)
예제 #5
0
from tornado_retry_client import RetryClient, FailedRequest
from tornado import gen, ioloop
import sys


class HttpLongTimeout(Exception):
    """Base class for exceptions in this module."""
    def __init__(self):
        print "We have tried maaaany times. Giving up..."
        sys.exit(1)


q = queues.Queue(maxsize=10)

http_client = AsyncHTTPClient()
retry_client = RetryClient(http_client, max_retries=5)


@gen.coroutine
def consumer():
    while True:
        future = yield q.get()
        print "got from queue!"
        item = yield future
        print item
        q.task_done()


@gen.coroutine
def producer():
    for item in range(100):