Python Web项目部署到SAE遇到的问题及解决

本地调试无误,部署SAE之后发生如下问题

无法保存session

  1. 原因:SAE禁止IO写操作,代码目录是不能写入,这样做的原因是,SAE是分布的,每次可能到不同的服务器上面,并且SAE的代码目录空间是有限的,不允许这样操作。

  2. 解决:使用数据库保存session
    在数据库中创建sessions表:

    create table sessions (
    session_id char(128) UNIQUE NOT NULL,
    atime timestamp NOT NULL default current_timestamp,            
    data text);
    

    之后将

    store = web.session.DiskStore('sessions')
    

    修改为

    store = web.session.DBStore(db, 'sessions')
    

无法保存图片(文件)

  1. 原因:同上

  2. 解决:使用SAE提供的Storage
    (1) 创建Storage

    image image

(2) 参照官方教程,创建bucket 官方教程

(3) 在上传文件的Python文件中添加import

from sae.storage import Bucket, Connection

(4) 保存文件代码修改为

c=Connection(accesskey=settings.ACCESS_KEY,
secretkey=settings.ACCESS_SECRET,
account='你的account')
bucket = c.get_bucket('你的bucket')
filepath=x.head.filename.replace('\\','/')
filename=filepath.split('/')[-1]
filename=filename.decode('utf-8')
#上面head更换为你的上传文件的字段

(5) 获取文件链接

bucket.generate_url(filename)

Article Published in on Python

Article by 付军