Google App Engine文件系统是否为临时存储?能否使用Django内置文件数据库?
请问Google App Engine的文件系统是否和Heroku一样属于临时存储?我计划在该平台部署Python-Django项目,想了解是否可以使用Django内置的文件数据库。
问题解答
1. 文件系统特性说明
- Google App Engine(GAE)的文件系统和Heroku完全一致,属于临时存储:所有写入本地磁盘的数据仅在当前实例运行期间有效,当发生实例重启、新版本部署、平台自动扩缩容销毁旧实例等场景时,本地写入的所有内容都会被清空,无法持久化留存。
2. Django内置文件数据库适配说明
- 不可以在GAE上使用Django内置的文件数据库(即默认的SQLite),原因如下:
- SQLite的全部数据都存储在本地单个磁盘文件中,一旦实例销毁或重启,所有数据会直接丢失
- 当GAE开启多实例部署时,每个实例会生成独立的SQLite文件,不同实例间数据完全无法同步,会出现严重的数据不一致问题
3. 可行替代方案
如果要在GAE上稳定部署Django项目,推荐选择以下持久化方案:
- 数据库层:使用托管型关系型数据库服务(支持MySQL、PostgreSQL),Django原生适配上述数据库,仅需修改
settings.py中的DATABASES配置项即可完成对接 - 文件存储层:如果需要存储用户上传文件、静态资源,可对接对象存储服务,也可以直接使用成熟的Django第三方存储后端插件快速完成适配
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

