MySQL服务器已经消失了

时间:2011-02-23 20:56:21

标签: python mysql sqlalchemy mod-wsgi web.py

我最近从本地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> 

1 个答案:

答案 0 :(得分:1)

查看以下文档:http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

设置processes=1实际上会启用多处理,这可能是您获得对同一sql连接的并发访问的原因。

此外,您似乎正在使用SQLAlchemy,因此在制作引擎时可能会尝试启用QueuePool或NullPool吗?