基于Flask的Web应用部署到SAE上遇到的问题
我的应用底层数据库用的是MySQL,利用Flask-SQLALchemy实现接口操作。我遇到的问题是:
在我把代码部署到SAE上后,当数据向数据库insert的时候总是出现“2006,MySQL has gone away”的问题。
查了官方文档和Google了很多,首先是用如下方法去做的:
1、SQLAlchemy_POOL_SIZE = 10
2、每次操作之后关闭数据库
def init_after_handlers(app):
@app.teardown_appcontext
def teardown_request(exception=None):
if hasattr(g, 'db'):
g.db.close()
#db2 = getattr(g, 'db2', None)
if db is not None:
db.session.remove()
但是上面的步骤对我却不起作用,真的是不应该啊!!!!!
后来又查了一下,说可以用ping,所以我此时就抛弃了利用SQLALchemy操作该部分数据,而改为直接使用MySQLdb。利用ping的方法就是不断的进行新连接。
def _connect(self,dbname):
tar = self.config[dbname]
self.con = MySQLdb.connect(host=tar['host'],
user=tar['user'],
port=tar['port'],
passwd=tar['passwd'],
charset=tar['charset'],
db=tar['db'])
self.con.ping(True)
self.cursor = self.con.cursor(cursorclass=MySQLdb.cursors.DictCursor)
在进行插入时:
def insert_by_dic(self,table,data):
keys = data.keys()
values = []
keystr = ','.join('`' + x + '`' for x in keys)
for key in keys:
values.append(data[key])
valstr = ','.join( "'" + x + "'" if isinstance(x,unicode) \
else "'" + str(x).decode('utf8') +"'" for x in values )
sql = "INSERT INTO %s (%s) VALUES (%s) " % (table,keystr,valstr)
self.cursor.execute(sql)
self.con.commit()
def insert_list_dic(self,data,table):
for item in data:
try:
self.insert_by_dic(table, item)
except MySQLdb.OperationalError:
self._connect(dbname)
self.insert_by_dic(table, item)
continue
except MySQLdb.IntegrityError,e:
print str(e)
continue
进行如上代码后,已经完全解决了2006的问题。
其实现在又遇到了一个问题,那就是我之前的分页是在后台实现的,即在model中利用pagnite实现的,但利用MySQLdb之后,实现不了,我还得学会在前端将数据进行分页。
未完待续..........................
基于Flask的Web应用部署到SAE上遇到的问题的更多相关文章
- 基于flask+gunicorn+nginx来部署web App
基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...
- 树莓派搭建基于flask的web服务器-通过移动端控制LED
1.概述 在局域网内,基于flask搭建web服务,从而可以使用移动客户端访问该web服务.由于是flask新手,所以本次实现的web服务功能较为简单,即控制LED灯的开/关及闪烁. 2.准备工作 2 ...
- 基于Flask的Web应用程序插件式结构开发
事实上,很多应用程序基于插件式结构开发,可以很方便了扩展软件的功能,并且这些功能完全可以依托于第三方开发者,只要提供好接口和完备文档,比如wordpress.谷歌火狐浏览器等. Python这样的动态 ...
- 基于HT for Web矢量实现HTML5文件上传进度条
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...
- 如何将Java Web项目部署到服务器上
转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...
- 把web项目部署到tomcat上
首先在服务器搭建JDK环境:https://www.cnblogs.com/lb809663396/p/5855877.html 然后把tomcat文件包复制到服务器上,访问http://localh ...
- 当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义
今天,我在部署web项目至云服务器上(Tomcat8.0)时,突然发现我的应用,无法上传图片,视频等多媒体文件了,一再检查自己的代码逻辑没有问题之后,逐一排查,首先想到的就是看一下控制台打印的日志,日 ...
- 基于Flask 实现Web微信登陆
网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中 ...
- 基于Flask开发web微信
1. 获取二维码 app.py import re import time import requests from flask import Flask,render_template app = ...
随机推荐
- Java - 安全的退出线程
stop() 存在的问题 使用 stop() 来退出线程是不安全的.它会解除由线程获取的所有锁,可能导致数据不一致. 举个例子: public class StopTest { public stat ...
- PHP_EOL
PHP中除去换行符 $str = str_replace(array("\r\n", "\r", "\n"), "", ...
- HTML基础(3)
1.块元素和内嵌元素(block\inline) 块的特征: 独占一行 不设定宽度,宽度将撑满整行 能设置所有样式 内嵌的特征: 默认同行可以继续跟同类型标签 内容撑开宽度 不支持宽高 不支持上下的m ...
- Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider停住了
2015.1.24进行了服务器的搬家,搬家后,更换了新的IP,导致新的IP访问以前IP的数据库服务无法成功Initializing connection provider: org.springfra ...
- JavaScript中关于地址的获取
//取当前页面名称(不带后缀名) function pageName(){ var a = location.href; var b = a.split("/"); var c = ...
- IaaS、PaaS、SaaS 之间的区别
IaaS.PaaS.SaaS 之间的区别 “云服务”现在已经快成了一个家喻户晓的词了.如果你还不知道PaaS.IaaS和SaaS的区别,那就太out了. “云”其实是互联网的一个隐喻,“云计算”其实就 ...
- C# 编程实现非自相交多边形质心
计算公式公式: http://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon 多边形的质心: 一个非自相交的n个顶点的多边形(x0,y0), (x ...
- spark 安装
Spark 集群安装 1.上传tar包,解压tar包 tar -zxvf spark-2.0.0-bin-hadoop2.6.tgz 2.修改配置文件(这是yarn模式) 进入 spark/conf ...
- iBATIS代码生成分析
1.分析目录结构"tools"(或者说模板) 2.首先分析ibatorConfig.xml文件 <?xml version="1.0" encoding= ...
- 2015项目timeline
1. app签到 http://h5.a.rongyi.com/html/app/sign/index.html (pc无效果.app端 20160105) 2.圣诞活动--砍价 http://h5 ...