2017-04-26 21:49:58 +00:00
sprockets.mixins.http
=====================
2017-04-27 15:04:26 +00:00
HTTP Client Mixin for Tornado RequestHandlers. Automatically retries on errors, sleep when rate limited, and handles content encoding and decoding using `MsgPack <http://msgpack.org> `_ and JSON.
2017-04-26 21:49:58 +00:00
|Version| |Travis| |CodeCov| |Docs|
Installation
------------
`` sprockets.mixins.http `` is available on the
`Python Package Index <https://pypi.python.org/pypi/sprockets.mixins.http> `_
and can be installed via `` pip `` or `` easy_install `` :
.. code-block :: bash
pip install sprockets.mixins.http
2017-04-27 02:50:14 +00:00
If you would like to use `tornado.curl_httpclient.CurlAsyncHTTPClient` ,
2017-04-27 02:29:04 +00:00
you can install `pycurl <http://pycurl.io> `_ with:
.. code-block :: bash
pip install sprockets.mixins.http[curl]
2017-04-26 21:49:58 +00:00
Documentation
-------------
2017-04-27 02:50:14 +00:00
http://pythonhosted.org/sprockets.mixins.http/
2017-04-26 21:49:58 +00:00
Requirements
------------
2017-10-19 14:37:00 +00:00
- `ietfparse <http://ietfparse.readthedocs.io> `_ >=1.4.1,<2
2017-04-27 02:29:04 +00:00
- `tornado <https://tornadoweb.org> `_ >=4.2.0,<5
2017-10-19 14:37:00 +00:00
- `u-msgpack-python <http://u-msgpack-python.readthedocs.io/en/latest/> `_ >=2.1,<3
2017-04-26 21:49:58 +00:00
Example
-------
This examples demonstrates the most basic usage of `` sprockets.mixins.http ``
.. code :: python
2017-04-27 02:19:48 +00:00
from tornado import gen, ioloop, web
from sprockets.mixins import http
2017-04-26 21:49:58 +00:00
2017-04-27 02:19:48 +00:00
class RequestHandler(http.HTTPClientMixin, web.RequestHandler):
2017-04-26 21:49:58 +00:00
@gen.coroutine
def get(self, *args, * *kwargs):
2017-04-27 02:19:48 +00:00
response = yield self.http_fetch('https://api.github.com')
if not response.ok:
self.set_status(response.code)
self.write(response.body)
if __name__ == "__main__":
2017-07-13 14:12:05 +00:00
app = web.Application([(r'/', RequestHandler)])
2017-04-27 02:19:48 +00:00
app.listen(8000)
ioloop.IOLoop.current().start()
2017-04-26 21:49:58 +00:00
2017-04-27 02:29:04 +00:00
As with Tornado, to use the curl client which has numerous benefits:
.. code :: python
from tornado import gen, httpclient, ioloop, web
from sprockets.mixins import http
httpclient.AsyncHTTPClient.configure(
'tornado.curl_httpclient.CurlAsyncHTTPClient')
class RequestHandler(http.HTTPClientMixin, web.RequestHandler):
@gen.coroutine
def get(self, *args, * *kwargs):
response = yield self.http_fetch('https://api.github.com')
if not response.ok:
self.set_status(response.code)
self.write(response.body)
if __name__ == "__main__":
2017-07-13 14:12:05 +00:00
app = web.Application([(r'/', RequestHandler)])
2017-04-27 02:29:04 +00:00
app.listen(8000)
ioloop.IOLoop.current().start()
2017-08-07 17:08:20 +00:00
Environment Variables
---------------------
+------------------+----------------------------------------------------------+
| HTTP_MAX_CLIENTS | An optional setting that specifies the maximum number of |
| | simultaneous asynchronous HTTP requests. If not |
| | specified, the default Tornado value of 10 will be used. |
+------------------+----------------------------------------------------------+
2017-04-26 21:49:58 +00:00
License
-------
`` sprockets.mixins.http `` is released under the `3-Clause BSD license <https://github.com/sprockets/sprockets.mixins.http/blob/master/LICENSE> `_ .
.. |Version| image :: https://badge.fury.io/py/sprockets.mixins.http.svg?
:target: http://badge.fury.io/py/sprockets.mixins.http
.. |Travis| image :: https://travis-ci.org/sprockets/sprockets.mixins.http.svg?branch=master
:target: https://travis-ci.org/sprockets/sprockets.mixins.http
.. |CodeCov| image :: http://codecov.io/github/sprockets/sprockets.mixins.http/coverage.svg?branch=master
:target: https://codecov.io/github/sprockets/sprockets.mixins.http?branch=master
.. |Docs| image :: https://img.shields.io/badge/docs-pythonhosted-green.svg
2017-04-27 02:50:14 +00:00
:target: http://pythonhosted.org/sprockets.mixins.http/