2015-11-04 92 views
1

我正在开发使用Django 1.8和python3.4与蟒蛇环境网站生成的文件。基本上,在用户输入参数并提交之后,会生成一个文件和图表并显示在网页上。然后用户可以下载文件和图像。处理多个用户同时

我来处理文件存储的方法是存储这些静态文件,并将其名称定为“result.csv”和“plot.png” .The文件是完全不同的基于用户的请求。但是,如果多个用户同时请求某个内容,系统只会保存一个带有名称的文件。这是非常危险的。

我没有洞察力来处理这种情况。任何人都可以给我一些建议或方向吗?非常感谢你。

+0

就我个人而言,我会将它们存储在媒体文件夹中。 – Wtower

+0

@Wtower文件和图像不会被用户上传,它们是由系统生成的,是否应放在MEDIA文件夹中? – chenchenmomo

+1

如果它们生成并没有上传,它有什么关系?使用静态文件夹,下次您进行新部署并运行收集静态以前生成的文件会发生什么?你将不得不手动解决这个问题。 – Wtower

回答

2

有几种方法可以做到这一点。涌现在脑海中,假设第一批要保留一组每个用户的结果(即最后生成的)

1 - 创建一个基于用户ID唯一的名称。这使您无需先咨询数据库中的用户数据即可访问这些文件。

它也有不必删除文件的先前版本的优势。

2 - 创建与uuid库模块

import uuid 
user_filename = uuid.uuid4() 
csv_filename = user_filename+'.csv' 
png_filename = user_filename+'.png' 

唯一的文件名和保存user_filename在以后访问数据库的用户记录。

3-做相同的,但使用时间戳和足够的分辨率

另外,您可以创建一个独特的名字一个子目录,它里面的文件存储与既有静态的名字。

2和3的要求你删除文件的先前版本生成相同的用户新的时候。

正如@Wtower提到,将文件存储在媒体目录,也许下一个进一步的子目录。

+0

谢谢@Pynchia。其实以前版本的文件是不需要存储的,我恳请使用你的第二个和第三个解决方案。但我不明白你为什么说选项2和3需要删除以前的版本。你的意思是前一个被自动删除? – chenchenmomo

+0

另一个问题,'user_filename'是随机生成的,如果它存储在数据库中,如何使用它以供以后访问?我的应用程序不会将用户信息存储在数据库中,我使用IP限制来管理用户。 – chenchenmomo

+0

OK,然后使用IP作为用户ID并使用该名称命名这些文件 – Pynchia