1
瓶 的Python 2.7 的Postgres 9 的Ubuntu 14.04燒瓶SQLAlchemy的TimeoutError
我使用的瓶和SQLAlchemy的,經過連續15個HTTP請求,我得到:
大小5溢流槽10的QueuePool達到上限,連接超時,超時30
然後服務器停止響應:
非常類似:
我沒有會話引擎,按我的理解瓶-SQLAlchemy中應照顧它。 我需要配置什麼以支持更多的會話並定期清理現有的會話。
app.py
import models
api_app = Flask(__name__)
api_app.config.from_pyfile(settings.celery_config)
db = SQLAlchemy(api_app)
@api_app.teardown_appcontext
def shutdown_session(exception=None):
try:
db.session.close()
except AttributeError,e:
print str(e)
except Exception,e:
print api_app.name
print str(e)
@api_app.route('/api/1.0/job/<string:ref>/')
def get_job_by_id(ref):
"""
:param id:
:return:
"""
try:
if request.method == 'GET':
job = models.Job.query.filter(models.Job.reference == ref)
if job:
job_ = job.all()
if len(job_) == 1:
return jsonify(job_[0].serialize())
resp = Response(status=404, mimetype='application/json')
return resp
else:
resp = Response(status=405, mimetype='application/json')
return resp
except Exception,e:
print str(e)
resp = Response(status=500, mimetype='application/json')
return resp
models.py
from api_app import db
class Job(db.Model, AutoSerialize, Serializer):
__tablename__ = 'job'
__public__ = ('status','description','reference')
id = Column(Integer, primary_key=True, server_default=text("nextval('job_id_seq'::regclass)"))
status = Column(String(40), nullable=False)
description = Column(String(200))
reference = Column(String(50))
def serialize(self):
d = Serializer.serialize(self)
del d['id']
return d
嘗試了db.session.remove(),重啓應用相同的問題 – spicyramen
嘗試設置值:https://pythonhosted.org/Flask-SQLAlchemy/config.html,現在工作:api_app.config ['SQLALCHEMY_POOL_SIZE'] = 100 – spicyramen
@spicyramen我編輯我的文章並添加您的評論。謝謝 –