-
-
Notifications
You must be signed in to change notification settings - Fork 445
Description
Asyncio
Pyinfra implements concurrency using Gevent. This module patches the standard libraries. It is incompatible with Asnyncio. Asyncio is generally preferred to Gevent and modern concurrent Python modules, such as NiceGUI use an Asyncio run loop.
Pyinfra should be modified to use Asyncio instead of Gevent
Asyncssh
Pyinfra implements ssh access using the Parimiko ssh client. Paramiko is a synchronous ssh client. Asyncssh is is a modern library built on top of Python's asyncio framework. It performs SSH operations asynchronously, this makes it ideal for I/O-bound tasks or applications requiring high concurrency.
Pyinfra should be modified to use Asyncssh instead of Paramiko.
sftp client
Pyinfra implements file operations on the server using the posix functions chmod, chown etc. However, there are standards for manipulating file attributes on servers. The sftp client operations should be preferred when manipulating ownership on servers.
Pyinfra should be modified to use sftp instead of posix functions for manipulating file attributes.
scp client
Pyinfra implements file transfer operations on serves using either the Paramiko sftp client or rsync. However, not every sever implements a rsync client. The scp client operations provided by asyncssh should be preferred.
Pyinfra should be modified to use sftp and scp for file transfer operations.
Interoperability with NiceGUI
These changes would make Pyinfra both more functional and more modern. They would also facilitate using Pyinfra as the back end for reemotecontrol, the reemote GUI.