与dropbox兼容的wsgi http接口
dropboxwsgi的Python项目详细描述
dropboxwsgi是一个Python包,它提供一个WSGI应用程序 在Dropbox API中实现HTTP接口。这个包裹 包括一个服务器应用程序,也称为dropboxwsgi,它运行 命令行中的wsgi应用程序。
这在您希望为网站提供服务的情况下非常有用 从你的Dropbox中,无论是对世界还是在一个私人网络中。 将此与当前链接Dropbox桌面的解决方案进行比较 服务器上的客户端,并从Dropbox文件夹中提供服务。
这个包还包含一个缓存中间件,它将缓存数据 从Dropbox API到本地磁盘(或任何存储 提供的实现)以消除冗余数据传输 在服务器和Dropbox之间。
顺便说一下,这个包还支持python 3。耶!
安装
安装简单有趣:
$ python setup.py install
功能
- 支持标准的http缓存头(etag,last modified)和逻辑
- 可选的自动生成的目录列表
- “index.html”文件支持
- 缓存中间件(位于dropboxwsgi.caching)
- 支持python 2.5+、3+、pypy
- 如果可用,自动使用gevent
服务器应用程序使用情况
dropboxwsgi既是服务器应用程序又是库。我们试试看 首先在命令行上使用它:
$ cat <<EOF > config.ini [Credentials] consumer_key = <your_dropbox_api_key> consumer_secret = <your_dropbox_api_secret> access_type = app_folder [Server] http_root = http://localhost:8080 listen = 8080 EOF $ dropboxwsgi -c config.ini -l info Server is running; using wsgiref server
很简单。现在将浏览器指向http://localhost:8080/。如果 如果要在生产环境中运行,我建议使用geventwsgi 服务器并使用nginx作为前端代理。
库使用
像dropboxwsgi这样的wsgi应用程序的好处是 能够在多种服务器环境中运行。App Engine和 Heroku我想起来了,但是在自己的vps上运行也可以。让我们 请使用python中包含的参考wsgi实现进行尝试:
#!/usr/bin/python from wsgiref.simple_server import make_server from dropboxwsgi.dropboxwsgi import make_app, MemoryCredStorage config = dict(http_root="http://localhost:8080", consumer_key="<your dropbox api key", consumer_secret="<your dropbox api secret>", access_type"dropbox or app_folder") app = make_app(config, MemoryCredStorage()) make_server("", 8080, app).serve_forever()
vanilla wsgi应用程序提供了标准的http缓存头 (etag和最后一次修改)但其他方面不会破坏http 标题空间。这使得您可以将尽可能多的中间件分层 在应用程序和服务器之间。
扩展性
如果我还没有足够的压力,让我再试一次。 有几十个中间件包可用于wsgi,甚至更多 讲http的代理服务器。扩展dropboxwsgi只是 把东西连在一起的问题。你想要一个缓存Dropbox 具有http身份验证的服务器?Squid+nginx+dropboxwsgi解决了 问题。可能性是无穷的!
版权资料
版权所有(c)Dropbox,Inc.
特此免费向任何获得 本软件和相关文档文件的副本(“软件”), 不受限制地使用软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或 出售软件的副本,并允许接受软件的人 在满足以下条件的情况下,可以这样做:
上述版权公告及本许可公告须包括在 软件的所有副本或大部分。
本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。无论如何 作者或版权持有人应对任何索赔、损害或 其他责任,不论是在合同诉讼、侵权诉讼或其他诉讼中, 由软件或使用或与之相关的 软件的其他交易。