我最近從我的本地web.py/apache設置移動到共享主機 ,我試圖匹配我的家庭配置。彈出一個 的問題是OperationalError「MySQL服務器已經消失」。 在互聯網上搜索時,遇到此錯誤 的人往往會在幾小時內處於非活動狀態。這發生在幾秒鐘之間我 。MySQL服務器已經消失
我已經確認使用mod_wsgi的應用程序()函數示例,我實際上正在守護程序模式下運行 。但是,有一個問題,涉及我 的是,如果我將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>
如上所述,切換到引擎的NullPool解決了這個問題。雖然這可能不是一個永久性的解決方案,但它肯定會緩解開發中的問題,直到我需要切換到高流量生產,並且我可以自己花費時間解決服務器配置問題。謝謝。 – voodoogiant 2011-02-28 18:21:34