异步的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如何反射地迭代数组字段?   java NamedQuery错误“具有给定标识符的多行:1”   java无法使用单独类中的计时器更新TextView   兼容性什么时候可以很快使用新的Java功能?   java二叉树路径和   java矩形的性能   java我想从同一个子表在主表中添加两个外键   java如何获取基于特定日期的所有数据?   java javafx、OO编程规则和写入变量类型的选择   java使用带枚举的switch语句   java异步任务生成运行时异常   java为什么JLabel不显示下划线字符?   java如何解析具有可变参数号的函数?   带有按钮的java JavaFX自定义列表单元格:未调用处理程序   java Modelmapper无法映射整个模型?   传递给持久化的java分离实体,包含LatLng列表