aio-binance-library
Async library for connecting to the Binance API on Python
This is a lightweight library that works as a connector to Binance Futures public API
- Supported APIs:
- USDT-M Futures `/fapi/*``
- Futures/Delivery Websocket Market Stream
- Futures/Delivery User Data Stream
- Inclusion of examples
- Response metadata can be displayed
Installation
pip install aio-binance-library
Getting started
REST API
Usage examples:
import asyncio
from aio_binance.futures.usdt import Client
async def main():
client = Client()
res = await client.get_public_time()
print(res)
client = Client(key='<api_key>', secret='<api_secret>')
# Get account information
res = await client.get_private_account_info()
print(res)
# Post a new order
params = {
'symbol': 'BTCUSDT',
'side': 'SELL',
'type_order': 'LIMIT',
'time_in_force': 'GTC',
'quantity': 0.002,
'price': 59808
}
res = await client.create_private_order(**params)
print(res)
asyncio.run(main())
Or you can use session (For multiple requests, this acts faster):
import asyncio
from aio_binance.futures.usdt import ApiSession
async def main():
async with ApiSession(key='<api_key>', secret='<api_secret>') as session:
res = await session.get_public_time()
print(res)
# Get account information
res = await session.get_private_account_info()
print(res)
# Post a new order
params = {
'symbol': 'BTCUSDT',
'side': 'SELL',
'type_order': 'LIMIT',
'time_in_force': 'GTC',
'quantity': 0.002,
'price': 59808
}
res = await session.create_private_order(**params)
print(res)
asyncio.run(main())
Please find examples folder to check for more endpoints.
Notes
The methods you need, adheres to a hierarchy
<method>_<availability>_<method_name>
create_private_order()
or
get_public_time()
Methods:
create, get, delete, change, update
Availability:
private - methods where key_api and secret_api are required
public - you can get information without a key
Testnet
You can choose testnet
from aio_binance.futures.usdt import Client
client= Client(testnet=True)
Optional parameters
Parameters can be passed in different formats as in Binance api documents or PEP8 suggests lowercase with words separated by underscores
# Binance api
response = await client.get_private_open_order('BTCUSDT', orderListId=1)
# PEP8
response = await client.get_private_open_order('BTCUSDT', order_list_id=1)
Timeout
timeout is available to be assigned with the number of seconds you find most appropriate to wait for a server response.
Please remember the value as it won't be shown in error message no bytes have been received on the underlying socket for timeout seconds.
By default, timeout=5
from aio_binance.futures.usdt import Client
client= Client(timeout=1)
Response Metadata
The Binance API server provides weight usages in the headers of each response.
You can display them by initializing the client with show_limit_usage=True:
from aio_binance.futures.usdt import Client
client = Client(show_limit_usage=True)
res = await client.time()
print(res)
returns:
{'data': {'serverTime': 1647990837551}, 'limit_usage': 40}
You can also display full response metadata to help in debugging:
client = Client(show_header=True)
res = await client.time()
print(res)
returns:
{'data': {'serverTime': 1587990847650}, 'header': {'Context-Type': 'application/json;charset=utf-8', ...}}
User agent
client = Client(agent='name_app')
You can pass the name of your application.
Websocket
This is an example of connecting to multiple streams
import asyncio
from aio_binance.futures.usdt import WsClient
async def callback_event(data: dict):
print(data)
async def main():
ws = WsClient()
stream = [
ws.stream_liquidation_order(),
ws.stream_book_ticker(),
ws.stream_ticker('BTCUSDT')
]
res = await asyncio.gather(*stream)
await ws.subscription_streams(res, callback_event)
asyncio.run(main())
More websocket examples are available in the examples folder
Note
Stream methods start with the word stream Example: stream_<name_method>
Subscribing to multiple streams: subscription_streams()
Heartbeat
Once connected, the websocket server sends a ping frame every 3 minutes and requires a response pong frame back within a 5 minutes period. This package handles the pong responses automatically.
Release files for aio-binance-library 2.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aio-binance-library-2.0.7.tar.gz | 22.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aio_binance_library-2.0.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.5 kB
Release files / aio-binance-library-2.0.7.tar.gz
| Download URL | aio-binance-library-2.0.7.tar.gz |
|---|---|
| Size | 22.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7bbacd74cf02da06b978ad3f30e6db643749e41bda3d1bf169e3f5ce3391e81f
|
|
BLAKE2b-256 checksum How to use checksums |
6c7a7e2cce0c5db086de416eaf5c74af3e7640fda1059d97d5f15e652cc7702d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.5
|
Release files / aio_binance_library-2.0.7-py3-none-any.whl
| Download URL | aio_binance_library-2.0.7-py3-none-any.whl |
|---|---|
| Size | 24.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b8fdd7be11c79ccfaa9e48fdebbc2a45bda6772137b1189717d5de0bc39ace2
|
|
BLAKE2b-256 checksum How to use checksums |
37af17fa11b202e456e72df17fa43245803f1ca9f73d3f1d8ea68a100f3c916f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.5
|