Thread-based, JS-like asynchronous calls for Python. Works in both Python 2.7 and Python 3.5+.
Release version:
Development version
git clone https://gitlab.com/solarliner/call.git
cd call
# Activate virtualenv if needed
python setup.py install
The library requires no other dependencies, and (will soon) support
Python's await
keyword.
Create a call:
def cb(resolve, reject):
result = factorial(100)
resolve(result)
call = Call(cb)
Wrap a synchronous function in a Call:
Chain calls with the then
keyword
call = Call(cb).then(lambda val: print(val))
Catch errors:
call = Call(cb)\
.then(lambda val: raise Exception())\
.catch(lambda err: print('Whoops'))
Compose calls:
results = Call.all([Call(cb) for _ in range(10)])
Block thread until resolved (or raises on failure):
result = call.wait()
Wait for call to either resolve or reject. Note that it is not recommended to get the data directly, as it may be
None
, which may or may not indicate that an error has occurred.
call.join()
result = call.data # Not recommended
The repository follows the git flow
standards. Create a feature branch, then ask for a pull/merge request.
The main repository is on GitLab, however the GitHub mirror is functional and you should be able to ask for pull requests. However, they will be processed in GitLab.