在SAE上部署Python的Django框架的一些问题汇总

yipeiwu_com5年前Python基础

花了些工夫将碎片网部署到了SAE,中途遇到各类问题。感觉SAE看上去很美,实际上却并不是太成熟(至少python版如此)。
下面记录下我遇到的一些主要问题以及解决方法。
django版本问题

Django1.4都即将发布了,SAE平台自带的SAE版本依旧为1.2x。为使用django1.3版本,你需上传自己的django。具体做法可参考SAE手册中的runtime.html#virtualenv
日志模块出错

最先遇到的是日至模块的问题。错误显示AdminEmailHandler中构造某个类时带了is_mail这个参数,但目标类的构造函数根本就不支持。好在日至模块不是必须。将日至处理模块换成django.utils.log.NullHandler解决问题。

'null': { 'level':'DEBUG', 'class':'django.utils.log.NullHandler', },
 

local_thread问题

在index.wsgi中加入

import threading
from django.utils import _threading_local
threading.local = _threading_local.local
 

settings文件

SAE默认安装了不少python包,其中包括django-userena。糟糕的是SAE将django-userena的demo项目也加到了python路径,而且加载的优先级比项目代码还高。直接导致os.environ[‘DJANGO_SETTINGS_MODULE'] = ‘settings'找到的是userena的settings文件。最终将settings文件改名为qnotes_settings.py解决该问题。
其他问题

    昨天部署上线后经常出现数据库错误,错误提示为Caught OperationalError while rendering: (1045, ‘access deny')  。SAE数据库不支持长连接,30s后主动超时。但django本就会在每次请求后自动关闭数据库连接,理论上不应当出现类似问题。该问题今天莫名其妙的自己好了。
    服务器非常不稳定,经常长时间的无法访问,不定期的可以正常访问。
    SAE可能hack了python的包加载机制的原因,SAE的python包的加载行为有些奇怪。本应当最先加载当前目录下的包,实际上却不一定。

相关文章

python生成requirements.txt的两种方法

python生成requirements.txt的两种方法

python项目如何在另一个环境上重新构建项目所需要的运行环境依赖包? 使用的时候边记载是个很麻烦的事情,总会出现遗漏的包的问题,这个时候手动安装也很麻烦,不能确定代码报错的需要安装的包...

安装python时MySQLdb报错的问题描述及解决方法

问题描述: windows安装python mysqldb时报错python version 2.7 required,which was not found in the regist...

详解Python绘图Turtle库

详解Python绘图Turtle库

 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面...

PyQt弹出式对话框的常用方法及标准按钮类型

PyQt弹出式对话框的常用方法及标准按钮类型

PyQt之弹出式对话框(QMessageBox)的常用方法及标准按钮类型 一、控件说明 QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息...

python 2.7.14安装图文教程

python 2.7.14安装图文教程

本文为大家分享了python2.7.14的安装教程,供大家参考,具体内容如下 1.下载python2.7.14 下载地址 根据自己电脑配置进行选择,我的是win7 64位,所以我选择的...