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)
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, ), )
def test_with_default_http_client(self): self.assertEqual(RetryClient().http_client, AsyncHTTPClient())
def setUp(self): super(TestRetryClient, self).setUp() self.retry_client = RetryClient(self.http_client, max_retries=5, retry_start_timeout=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):