Async requests-like httplib for python.
Branch: master
Clone or download
markj
markj bump ver
Latest commit 1510053 Feb 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
asks Fix #99 Jan 15, 2019
docs Added a third timeout for StreamResponse's StreamBody, allowing each … Sep 26, 2018
tests Fix #99 Jan 15, 2019
.gitignore updated .gitignore to remove stupid pyc files May 14, 2018
.travis.yml bumped ver, added py nightly and allowed failure to travis May 24, 2018
LICENCE.txt Initial commit Feb 4, 2017
MANIFEST.in include LICENCE.txt in sdists and wheels Nov 16, 2018
README.md Fix the example with trio Oct 26, 2018
pylintrc use pytest-httpbin Sep 16, 2017
setup.cfg include LICENCE.txt in sdists and wheels Nov 16, 2018
setup.py

README.md

Build Status Docs Status

asks

asks is an async requests-like http lib, for use in conjunction with the wonderful curio and trio async libs.

asks aims to have a mostly familiar API, using simple functions/methods like get() for getting, post() for posting. At the heart of asks is a session class which makes interacting with the web in a sustained and fluid way fast, efficient, and simple. Check out the examples!

Check the docs!

http://asks.readthedocs.io/

Above you'll find detailed docs with a large number of simple examples to help you get off the ground in no time.

Installation

Requires: Python 3.5.2 or newer.

pip install asks

Note: Currently supports trio's development branch. You can install this by doing pip install git+https://github.com/python-trio/trio.git

Examples

# one request
# A little silly to async one request, but not without its use!
import asks
import curio
asks.init('curio')

async def example():
    r = await asks.get('https://example.org')
    print(r.content)

curio.run(example())
# many requests
# make 1k api calls and store their response objects
# in a list.

import asks
import trio

asks.init(trio)

path_list = ['http://fakeurl.org/get','http://example123.org']

results = []


async def grabber(s, path):
    r = await s.get(path)
    results.append(r)


async def main(path_list):
    from asks.sessions import Session
    s = Session('https://example.org', connections=2)
    async with trio.open_nursery() as n:
        for path in path_list:
            n.start_soon(grabber, s, path)

trio.run(main, path_list)

Changelog

2.0.0 - Setting stream=True means that the response returned will be a StreamResponse object rather than the default Response object.

Shoutout to ##lp, and the fine peeps of 8banana