django pyfilesystem集成
django-pyfs的Python项目详细描述
一个Django模块,它使用多种方法扩展PyFileSystem2 方便网络使用。具体来说,它扩展了pyfilesystem2 有两种方法:
fs.get_url(filename, timeout=0)
这将向资源返回一个外部可用的url。如果 超时>;0,URL可能在该时间段之后停止工作(在 秒)。详细信息取决于实现。在Amazon S3上,这是 一个安全的url,仅在该时间段内可用。对于静电 文件系统,URL是不安全的和永久的。
fs.expire(filename, seconds, days, expires=True)
这允许我们创建临时对象。我们的用例是 希望为用户生成.png图像的可视化效果。这个 这些图像的生存期是一个web请求,因此我们将它们设置为 几分钟后过期。另一个用例是备忘录。
请注意,过期文件不会自动删除。要移除它们, 调用expire_objects()。在我们的系统中,我们有一个cron任务 有段时间了。芹菜、手工清除等都是选择。
要将django pyfs配置为使用静态文件,请在 django设置:
- DJFS = {‘type’ :‘osfs’,
- ‘directory_root’ : ‘djpyfs/static/djpyfs’, ‘url_root’ : ‘/static/djpyfs’}
在这里,directory\u root是文件的位置。url\u root是URL Web服务器配置为从其提供服务的位置的基础。
要在s3上使用文件,需要安装boto。然后,
- DJFS = {‘type’ :‘s3fs’,
- ‘bucket’ : ‘my-bucket’, ‘prefix’ : ‘/pyfs/’ }
bucket是您的s3 bucket。前缀是可选的,并给出一个基 在那个桶里。
要获取文件系统,请致电:
def get_filesystem(namespace)
每个模块都应该传递一个唯一的命名空间。通常情况下 对应于文件系统中的子目录。
django pyfs接口设计为通用(非django 特定)PyFileSystem2的扩展。然而,具体的 实现是非常特定于django的。
接下来很好的步骤是:
- 允许django存储充当pyfilesystem的后端
- 允许django pyfs充当django存储的后端
- 支持更多类型的pyfilesystems(特别是在内存中就更好了)
状态:此代码经过测试,在一系列设置中运行良好, 目前部署在edx.org上。