Python MySQL服务器已经消失了
我最近已从本地的web.py/apache设置转移到共享主机 我正在尝试匹配我的家庭配置。一个问题是 弹出的错误是“MySQL服务器已经消失”。 在互联网上搜索时,遇到此错误的人 倾向于在数小时内不活动。这发生在我身上 几秒钟之间 我已经使用mod_wsgi的application()函数示例确认 我实际上是在守护程序模式下运行的。但有一个问题与我有关 如果我将web.ctx.orm吐到错误日志中,它似乎是一个错误 每个请求的新对象。我的sqlalchemy会话对象不应该是相同的吗 页面请求之间 这是我的python代码和apache设置的一部分。有 任何会在我没有的这台新机器上引起问题的东西 在我的家用机器上之前Python MySQL服务器已经消失了,python,mysql,sqlalchemy,mod-wsgi,web.py,Python,Mysql,Sqlalchemy,Mod Wsgi,Web.py,我最近已从本地的web.py/apache设置转移到共享主机 我正在尝试匹配我的家庭配置。一个问题是 弹出的错误是“MySQL服务器已经消失”。 在互联网上搜索时,遇到此错误的人 倾向于在数小时内不活动。这发生在我身上 几秒钟之间 我已经使用mod_wsgi的application()函数示例确认 我实际上是在守护程序模式下运行的。但有一个问题与我有关 如果我将web.ctx.orm吐到错误日志中,它似乎是一个错误 每个请求的新对象。我的sqlalchemy会话对象不应该是相同的吗 页面请求之间
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>
WSGIDaemonProcess app processs=1线程=1 python路径=/home/net/
公共html/myapp
WSGIProcessGroup应用程序
WSGIScriptAlias/myapp/home/net/public_html/myapp/managio.py
选项索引多视图跟随符号链接
不允许超限
命令允许,拒绝
通融
检查以下位置的文档:
设置processs=1
实际上会启用多处理,这可能就是您获得对同一sql连接的并发访问的原因
另外,您似乎正在使用SQLAlchemy,因此在创建引擎时,可以尝试启用QueuePool或NullPool use?在这种情况下,使用“processs=1”并随后将“wsgi.multiprocess”标志设置为True(如果不是真的)不会有任何区别。它也不会导致多处理保持开启状态,至少在mod_wsgi中不会。唯一的区别是该标志是否设置为真。正如建议的那样,引擎切换到NullPool解决了问题。虽然这可能不是一个永久性的解决方案,但它肯定会缓解开发中的问题,直到我需要切换到高流量生产,并且我可以花时间解决服务器配置问题。谢谢