在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代码来绘制彭罗斯点阵的教程
Apr 03 Python
python学习 流程控制语句详解
Jun 01 Python
简单谈谈Python中的json与pickle
Jul 19 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
对python中的for循环和range内置函数详解
Apr 17 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
Django中多种重定向方法使用详解
Jul 17 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
Aug 15 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
python线程里哪种模块比较适合
Aug 02 Python
详解python中的异常捕获
Dec 15 Python
python 学习GCN图卷积神经网络
May 11 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
JavaScript简介
2015/02/15 Javascript
JavaScript知识点整理
2015/12/09 Javascript
javascript实现表单验证
2016/01/29 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
python下10个简单实例代码
2017/11/15 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
python 函数中的参数类型
2020/02/11 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
公司授权委托书范本
2014/04/03 职场文书
房产委托公证书
2014/04/08 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
委托书格式要求
2015/01/28 职场文书
公司车辆维修管理制度
2015/08/05 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
使用Pytorch训练two-head网络的操作
2021/05/28 Python