在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装饰器基础详解
Mar 09 Python
Python爬取网易云音乐热门评论
Mar 31 Python
简单了解什么是神经网络
Dec 23 Python
深入理解Django的中间件middleware
Mar 14 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
python异步存储数据详解
Mar 19 Python
python3 webp转gif格式的实现示例
Dec 10 Python
python 普通克里金(Kriging)法的实现
Dec 19 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
解决jupyter notebook启动后没有token的坑
Apr 24 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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实现快速排序法函数代码
2012/08/27 PHP
php中的观察者模式简单实例
2015/01/20 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
javascript实现的猜数小游戏完整实例代码
2016/05/10 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python读取Excel的方法实例分析
2015/07/11 Python
pytorch 共享参数的示例
2019/08/17 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
致铅球运动员广播稿精选
2014/01/12 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
迎国庆主题班会
2015/08/17 职场文书
经销商会议开幕词
2016/03/04 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
Java spring单点登录系统
2021/09/04 Java/Android
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript