在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的Tornado框架实现一个简单的WebQQ机器人
Apr 24 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
图文详解python安装Scrapy框架步骤
May 20 Python
python多线程与多进程及其区别详解
Aug 08 Python
python pygame实现球球大作战
Nov 25 Python
python利用dlib获取人脸的68个landmark
Nov 27 Python
python模拟斗地主发牌
Apr 22 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 Python
python实现计算器简易版
Dec 17 Python
SpringBoot首页设置解析(推荐)
Feb 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
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
php 自定义错误日志实例详解
2016/11/12 PHP
javascript GUID生成器实现代码
2009/10/31 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
Python爬取网页信息的示例
2020/09/24 Python
python实现自动打卡的示例代码
2020/10/10 Python
python实现KNN近邻算法
2020/12/30 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
美国在线珠宝商店:SZUL
2017/02/11 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
教师岗位职责范本
2013/12/29 职场文书
学术会议邀请函
2015/01/30 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server