异步的ftp客户机/服务器

aioftp的Python项目详细描述


Travis status for master branchhttps://codecov.io/gh/aio-libs/aioftp/branch/master/graph/badge.svghttps://img.shields.io/pypi/v/aioftp.svghttps://img.shields.io/pypi/pyversions/aioftp.svghttps://pypi-badges.global.ssl.fastly.net/svg?package=aioftp&timeframe=monthly

异步的ftp客户机/服务器(http://aioftp.readthedocs.org

功能

  • 很简单。
  • 可扩展。
  • 通过twunnel3代理。

目标

  • 最小可用磁芯。
  • 不要使用不推荐使用或重写的命令和功能(如果可能)。
  • 非常高级的API。

客户端使用以下命令:user、pass、acct、pwd、cwd、cdup、mkd、rmd、mlsd, mlst、rnfr、rnto、dele、stor、appe、retr、type、pasv、abor、quit、rest、list (作为回退)

服务器支持以下命令:user、pass、quit、pwd、cwd、cdup、mkd、rmd、mlsd, 列表(但不建议使用,因为它没有标准格式) mlst,rnfr,rnto,dele,stor,retr,type(“i”和“a”),pasv,abor,appe,rest

这个子集足以完成99%的任务,但是如果你需要什么,那么 可以方便地扩展当前的命令集。

服务器基准

pyftpdlib和 检查了它的ftpbench脚本。

AIOFTP 0.8.0

STOR (client -> server)                              284.95 MB/sec
RETR (server -> client)                              408.44 MB/sec
200 concurrent clients (connect, login)                0.18 secs
STOR (1 file with 200 idle clients)                  287.52 MB/sec
RETR (1 file with 200 idle clients)                  382.05 MB/sec
200 concurrent clients (RETR 10.0M file)              13.33 secs
200 concurrent clients (STOR 10.0M file)              12.56 secs
200 concurrent clients (QUIT)                          0.03 secs

Pyftpdlib 1.5.2

STOR (client -> server)                             1235.56 MB/sec
RETR (server -> client)                             3960.21 MB/sec
200 concurrent clients (connect, login)                0.06 secs
STOR (1 file with 200 idle clients)                 1208.58 MB/sec
RETR (1 file with 200 idle clients)                 3496.03 MB/sec
200 concurrent clients (RETR 10.0M file)               0.55 secs
200 concurrent clients (STOR 10.0M file)               1.46 secs
200 concurrent clients (QUIT)                          0.02 secs

依赖关系

  • Python3.5.3+

许可证

aioftp是在apache 2许可下提供的。

库安装

pip install aioftp

开始

客户示例

importasyncioimportaioftpasyncdefget_mp3(host,port,login,password):asyncwithaioftp.ClientSession(host,port,login,password)asclient:forpath,infoin(awaitclient.list(recursive=True)):ifinfo["type"]=="file"andpath.suffix==".mp3":awaitclient.download(path)loop=asyncio.get_event_loop()tasks=(get_mp3("server1.com",21,"login","password")),get_mp3("server2.com",21,"login","password")),get_mp3("server3.com",21,"login","password")),)loop.run_until_complete(asyncio.wait(tasks))loop.close()

服务器示例

importasyncioimportaioftploop=asyncio.get_event_loop()server=aioftp.Server()loop.run_until_complete(server.start(None,8021))try:loop.run_forever()exceptKeyboardInterrupt:loop.run_until_complete(server.close())loop.close()

或者只使用简单的服务器

python -m aioftp --help

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用于批量操作的java RESTful API分块响应   java读取在线存储的文本文件   在Java ME中将双精度舍入到小数点后5位   java查找一个数字的最接近因子   java更改JMenuBar的字体   java Kmeans聚类算法运行时间和复杂性   java是否可以阻止try catch返回null   java内容解析器指向具有正确URI的错误表   java Android Kotlin插装测试未被识别为插装测试   java TestNG@Dataprovider   在forloop和print语句中声明变量时发生java错误   java在Android Studio 3中设置JNI