0

目前已经制作了一个烧瓶应用程序,当我重新启动 postgres 数据库时它会崩溃,因为打开的游标是陈旧的......

我该如何处理这种情况。目前通过 psycopg2 将烧瓶应用程序连接到 postgres ....

我不是数据库专家...

  Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1701, in __call__
    return self.wsgi_app(environ, start_response)
  File "/var/www/flaskapps/capp/override.py", line 15, in __call__
    return self.app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1689, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1356, in full_dispatch_request
    rv = self.preprocess_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1539, in preprocess_request
    rv = func()
  File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 321, in _load_user
    self.reload_user()
  File "/usr/local/lib/python2.7/dist-packages/flask_login.py", line 350, in reload_user
    user = self.user_callback(user_id)
  File "/var/www/flaskapps/capp/login_setup.py", line 163, in load_user
    cursor.execute(qstr)
  File "/usr/share/pyshared/psycopg2/extras.py", line 123, in execute
    return _cursor.execute(self, query, vars)
InterfaceError: cursor already closed
4

1 回答 1

1

这是您的代码需要检测瞬时故障并重试事务并在必要时重新打开连接的众多情况之一。

其他情况包括死锁和序列化失败。

异常上的 sqlstate 将让您确定要重试哪些错误情况以及如何重试。有关sqlstate 代码含义的指导,请参阅有关错误代码的 PostgreSQL 文档。

有时你的数据库接口会通过一个类型化的异常来告诉你它的数据类型。这看起来不像是其中一种情况。

于 2013-06-09T01:51:56.603 回答