Bibliothèque asynchrone pour travailler avec l'API Mikrotik

Je vous souhaite la bienvenue.

Récemment, j'ai dû travailler avec Mikrotik via son API. Cela ne semble rien de remarquable, il y a une bibliothèque officielle , il y a aussi un wrapper sur le github , mais le problème est - j'ai dû travailler de manière asynchrone via asyncio et en utilisant des chignons async / attente. Et je n'ai pas trouvé une telle bibliothèque.

J'ai dû m'écrire.

L'article ne sera pas très long, car il n'y a rien de spécial à écrire. Et un lien vers le référentiel serait tout à fait suffisant.

Installation du package:

pip install aio_api_ros 

Voici un exemple d'utilisation:

 import asyncio from aio_api_ros import create_rosapi_connection async def main(): #   mk = await create_rosapi_connection( mk_ip='127.0.0.1', mk_port=8728, mk_user='myuser', mk_psw='mypassword' ) #   mk.talk_word('/ip/hotspot/active/print') #     res = await mk.read() print(res) mk.close() if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(main()) loop.close() 

Il est également possible de créer un simple pool de connexions avant Mikrotik, mais le pool n'a pas été testé dans des conditions de combat.

Le même exemple mais avec un pool de connexions
 import asyncio from aio_api_ros import create_rosapi_simple_pool async def main(): mk = await create_rosapi_simple_pool( mk_ip='127.0.0.1', mk_port=8728, mk_user='myuser', mk_psw='mypassword', max_size=4 ) await mk.talk_word('/ip/hotspot/active/print') res = await mk.read() print(res) mk.close() if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(main()) loop.close() 


Pour analyser les réponses de microt, j'ai utilisé les meilleures pratiques de ce référentiel

J'espère que quelqu'un trouvera cela utile.

Source: https://habr.com/ru/post/fr444098/


All Articles