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


Posted in Python onMay 30, 2015

花了些工夫将碎片网部署到了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 相关文章推荐
python单元测试unittest实例详解
May 11 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
python实现弹跳小球
May 13 Python
深入了解Python iter() 方法的用法
Jul 11 Python
Python-openCV读RGB通道图实例
Jan 17 Python
Pymysql实现往表中插入数据过程解析
Jun 02 Python
python 8种必备的gui库
Aug 27 Python
python通过函数名调用函数的几种场景
Sep 23 Python
Python基础之条件语句详解
Jun 16 Python
python实现比较两段文本不同之处的方法
May 30 #Python
python统计文本文件内单词数量的方法
May 30 #Python
python使用win32com库播放mp3文件的方法
May 30 #Python
基于wxpython开发的简单gui计算器实例
May 30 #Python
python图像处理之镜像实现方法
May 30 #Python
python图像处理之反色实现方法
May 30 #Python
python中字典(Dictionary)用法实例详解
May 30 #Python
You might like
php实现的在线人员函数库
2008/04/09 PHP
PHP 判断变量类型实现代码
2009/10/23 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
php利用事务处理转账问题
2015/04/22 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
js date 格式化
2017/02/15 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
Promise扫盲贴
2019/06/24 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
Python如何使用input函数获取输入
2020/08/06 Python
金讯Java笔试题目
2013/06/18 面试题
中专毕业生的自我鉴定
2013/12/01 职场文书