标签归档:jstnote

SAE部署Django1.3应用问题总汇

花了些工夫将碎片网部署到了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包的加载行为有些奇怪。本应当最先加载当前目录下的包,实际上却不一定。

又挖了一个新坑-_-,文本分享网站

网站 http://qnotes.sinaapp.com
代码 https://github.com/vicalloy/jstnote
类似 http://dpaste.com/ 的文本分享工具。
dpaste.com 用来贴代码,这个用来分享一般文档。
支持TXT, Html, Markdown, Textile, reStructuredText格式。
匿名使用,在保存文本的时候设置编辑密码,凭编辑密码对文本进行编辑删除(密码暂时还不可修改-_-)。
罪魁祸首是我想随便写个小东西放到SAE上,把SAE的免费配额用掉点。
最开始只是想做个最简单的在线标记语言标记分享工具,预计花1~2天时间做到 http://dpaste.com/ 的程度。
接着…
考虑到使用的方便性,取消了注册功能。
因为是文档写作工具,所以编辑功能是需要的。
后来想评论功能得加上。
然后想加上评论功能后就是一个类似百度贴吧的匿名社区了,那不如把tag也加上。
最终就成了现在的样子。
因为功能一直加,时间也远超预期(好在没拖到下周)。
UI用的twitter-bootstrap。
使用的django框架加若干第三方APP
代码放在
https://github.com/vicalloy/jstnote
写代码的时候只考虑到工作量,有现成的组件尽量用现成的,性能应当会非常的差。
吐槽:
– django自带的评论app非常的不人性化。为了防止进入评论的错误提示页面,花了不少时间用JS写表单的错误检验。
– SAE不是太好用。默认带的django太老。使用自己的django,一直出错。尝试解决了几个问题后最终放弃。(注:已经成功部署上去,感觉问题不少,还有待验证)