Support Aria2 rpc client and manage server with async/await
Project description
aioaria2
Support async rpc call with aria2 and process management
Usage:
example
import asyncio
from pprint import pprint
import aioaria2
async def main():
async with aioaria2.Aria2HttpClient("http://117.0.0.1:6800/jsonrpc",
token="token") as client:
pprint(await client.getVersion())
asyncio.run(main())
The ip address should be replaced with your own
See aria2 manual for more detail about client methods
# exampe of http
import asyncio
from pprint import pprint
import aioaria2
import ujson
async def main():
async with aioaria2.Aria2HttpClient("http://127.0.0.1:6800/jsonrpc",
token="token",
loads=ujson.loads,
dumps=ujson.dumps) as client:
pprint(await client.addUri(["http://www.demo.com"])) # that would start downloading
asyncio.run(main())
# exampe of websocket
import asyncio
from pprint import pprint
import aioaria2
import ujson
@aioaria2.run_sync
def on_download_complete(trigger, data):
print(f"downlaod complete {data}")
async def main():
client: aioaria2.Aria2WebsocketClient = await aioaria2.Aria2WebsocketClient.new("http://127.0.0.1:6800/jsonrpc",
token="token",
loads=ujson.loads,
dumps=ujson.dumps)
client.onDownloadComplete(on_download_complete)
pprint(await client.addUri(["http://www.demo.com"]))
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
- Run that coroutine function and each method represent an aria2-rpc call. As for server, each instance represent an aria2 process.
import aioaria2
import asyncio
async def main():
server = aioaria2.AsyncAria2Server(r"aria2c.exe",
r"--conf-path=aria2.conf", "--rpc-secret=admin", daemon=True)
await server.start()
await server.wait()
asyncio.run(main())
this start an aria2 process
todolist
- async http
- async websocket
- async process management
- unitest
This module is built on top of aria2jsonrpc with async and websocket support.
For windows users, you should
# for start async aria2 process
asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
asyncio.set_event_loop(asyncio.ProactorEventLoop())
For python version greater than 3.8, asyncio uses ProactorEventLoop by default, so there is no need to modify
v1.2.0
new Aria2WebsocketTrigger class for websocket events, use on* methods to add callbacks
Like
@trigger.onDownloadStart
async def onDownloadStart(trigger, future):
print("下载开始{0}".format(future.result()))
v1.2.3
Now you can add multiple callbacks for one event ,must be coroutine function or an async callable, use aioaria2.run_sync
to wrap a sync function
@trigger.onDownloadStart
async def callback1(trigger, future):
print("第一个回调{0}".format(future.result()))
@trigger.onDownloadStart
@run_sync
def callback2(trigger, future):
print("第二个回调{0}".format(future.result()))
v1.3.0
-
Big changes for class
Aria2WebsocketTrigger
-
Callbacks now accept
dict
as second parameter instead ofasyncio.Future
-
methods of class
Aria2WebsocketTrigger
now have same return value asAria2HttpClient
-
id
parameter now accept a callable as idfactory to generate uuid, otherwise default uuid factory is used.
@trigger.onDownloadStart
async def callback1(trigger, data:dict):
print("第一个回调{0}".format(data))
@trigger.onDownloadStart
@run_sync
def callback2(trigger, data:dict):
print("第二个回调{0}".format(data))
v1.3.1
- custom json library with keyword arguments
loads
dumps
v1.3.2
- fix unclosed client_session when exception occurs during ws_connect
- alias for
Aria2WebsocketTrigger
,namedAria2WebsocketClient
v1.3.3
- fix method problems in client
v1.3.4rc1
- handle reconnect simply
- handle InvalidstateError while trying to ping aria2
v1.3.4
- add async id factory support
- allow unregister callbacks in websocketclient
- add contextvars support in
run_sync
v1.3.5rc1
- graceful shutdown
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 aioaria2-1.3.5rc1.tar.gz
.
File metadata
- Download URL: aioaria2-1.3.5rc1.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 304e58c4d9f1e8775d4bd46afdf3eb9f8f510a844db29094fe293bc4a611f24b |
|
MD5 | ad80621494d3daa4544239bdfbea86b7 |
|
BLAKE2b-256 | 8c10a41bb5c5638bbb4027a8bbb6107ff7ba224ba5aa40d363ec1b938eb4aade |
File details
Details for the file aioaria2-1.3.5rc1-py3-none-any.whl
.
File metadata
- Download URL: aioaria2-1.3.5rc1-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b26fa2671e0bf55be3e132b9c471cff95efad434b5ca9750db14ec71bfb8f12 |
|
MD5 | 5fdd7cb70d247a9d5e92057c8ccff72d |
|
BLAKE2b-256 | 1f90fc3176bbf3506cb06d605cab5ae6056d72f38c4faac459aab0511b1b42e7 |