Crypto WS API connector for ASYNC requests
Project description
Crypto WS API connector for ASYNC requests
Full coverage of all methods provided by the interface
Provides of connection management, keepalive and rate limits control
For :heavy_check_mark:Binance,
Features
Lightweight and efficient solution to utilize of all available methods provided through the:
Session management layer for:
- Credentials
- Connection
- Keepalive
- Error handling
- Limits control
- Methods construction
- Generating session request id by default
- Creating request on-the-fly from method name and params: {}
- Generating signature if necessary
- Response handling
- logging
User interface layer
- Start session instance
- Getting session operational status
- Send async request
- Get response or raised exception
- Stop session instance
Get started
Install use PIP
pip install crypto_ws_api
For upgrade to latest versions use:
pip install -U crypto_ws_api
After first install create environment by run
crypto_ws_api_init
in terminal window.
The config directory will be created. You get path to config:
ubuntu@ubuntu:~$ crypto_ws_api_init
Can't find config file! Creating it...
Before first run set account(s) API key into /home/ubuntu/.config/crypto_ws_api/ws_api.toml
Prepare exchange account
- For test purpose log in at Binance Spot Test Network
- Create API Key
- After install and create environment specify api_key and api_secret to the config file
Start demo
- Run in terminal window
crypto_ws_api_demo
Useful tips
crypto_ws_api/demo.py
- complete and fully functional example
Get credentials and create user session
from crypto_ws_api.ws_session import get_credentials, UserWSSession
# Can be omitted if you have credentials
_exchange, _test_net, api_key, api_secret, ws_api_endpoint = get_credentials(account_name)
session = aiohttp.ClientSession()
user_session = UserWSSession(
api_key,
api_secret,
session=session,
endpoint=ws_api_endpoint
)
await user_session.start()
print(f"Operational status: {user_session.operational_status}")
Demo method's calling
await account_information(user_session)
Stop user session and close aiohttp session
await user_session.stop()
await session.close()
print(f"Operational status: {user_session.operational_status}")
Method call example
async def account_information(user_session: UserWSSession):
# https://developers.binance.com/docs/binance-trading-api/websocket_api#account-information-user_data
try:
res = await user_session.handle_request(
"account.status",
api_key=True,
signed=True
)
if res is None:
print("Here handling state Out-of-Service")
except asyncio.CancelledError:
pass # Task cancellation should not be logged as an error
except Exception as _ex:
print(f"Handling exception: {_ex}")
else:
print(f"Account information (USER_DATA) response: {res}")
Logging setup
For configure logging in multi-module project use next snippet for yours main()
:
import logging.handlers
logger = logging.getLogger(__name__)
formatter = logging.Formatter(fmt="[%(asctime)s: %(levelname)s] %(message)s")
#
sh = logging.StreamHandler()
sh.setFormatter(formatter)
sh.setLevel(logging.DEBUG)
#
root_logger = logging.getLogger()
root_logger.setLevel(logging.DEBUG)
root_logger.addHandler(sh)
Limits control :link:
Upon reaching the limit threshold of each type, the session switches to the Out-of-Service state. Monitor the values
of the variables user_session.operational_status
and user_session.order_handling
If you send a request in this state, the answer will be None
In any case, you are protected from exceeding limits and blocking for this reason
Donate
BNB, BUSD, USDT (BEP20) 0x5b52c6ba862b11318616ee6cef64388618318b92
USDT (TRC20) TP1Y43dpY7rrRyTSLaSKDZmFirqvRcpopC
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file crypto-ws-api-2.0.1b3.tar.gz
.
File metadata
- Download URL: crypto-ws-api-2.0.1b3.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b846f1a6a479db02aa1a34052d1fb2eb7b30a277b502d0e7047dd94cb07c20f7 |
|
MD5 | 4abbb48825837634f9ebff69206903f8 |
|
BLAKE2b-256 | 97c83bf4f4c2ebc275ec2162c9ec8ac524fad1c228191b967d7130bd06761bad |
File details
Details for the file crypto_ws_api-2.0.1b3-py3-none-any.whl
.
File metadata
- Download URL: crypto_ws_api-2.0.1b3-py3-none-any.whl
- Upload date:
- Size: 10.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7988b0dcdb3c4a83cabadbb92c9ba3a39cc69b37a425ee9af62bd0b143ecd3a9 |
|
MD5 | a32dadf0c71326e92869a17d5aec7a15 |
|
BLAKE2b-256 | 6a476443a71b981918621ecaf854b8aaf0789bd3423aded0d20b1da801bcd8a5 |