Skip to content

Asynchronous operation, Asynchronous ssh, sftp file attribute manipulation, scp file transfer #1478

@kimjarvis

Description

@kimjarvis

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions