我最近从本地web.py/apache设置转移到共享主机 而我正在尝试匹配我的家庭配置。一个问题是 弹出是一个OperationalError“MySQL服务器已经消失”。 在互联网上搜索,遇到此错误的人 在几个小时的时间里往往不活跃。这发生在我身上 几秒钟之间。
我已经确认使用了mod_wsgi的application()函数示例 我实际上是在守护进程模式下运行。但是有一个问题,这关系到我 如果我将web.ctx.orm吐出到错误日志,它似乎是一个 每个请求的新对象。我的sqlalchemy会话对象不应该是相同的 页面请求之间?
这是我的python代码和我的apache设置的一部分。在那儿 任何会导致这台新机器出现问题的东西我都没有 在我的家用机器上之前?
def load_sqla(handler):
web.ctx.orm = scoped_session(sessionmaker(bind=engine))
try:
try:
return handler()
except web.HTTPError:
web.ctx.orm.commit()
raise
except:
web.ctx.orm.rollback()
raise
finally:
web.ctx.orm.commit()
# If the above alone doesn't work, uncomment
# the following line:
web.ctx.orm.expunge_all()
... urls and controllers ...
app = web.application(urls, globals(), autoreload=False)
app.add_processor(load_sqla)
application = app.wsgifunc()
这是我的apache设置的一部分。
WSGIDaemonProcess app processes=1 threads=1 python-path=/home/net/
public_html/myapp
WSGIProcessGroup app
WSGIScriptAlias /myapp /home/net/public_html/myapp/managio.py
<Directory "/home/stratton/public_html/myapp">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
答案 0 :(得分:1)
查看以下文档:http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
设置processes=1
实际上会启用多处理,这可能是您获得对同一sql连接的并发访问的原因。
此外,您似乎正在使用SQLAlchemy,因此在制作引擎时可能会尝试启用QueuePool或NullPool吗?