python - python Django + FastCGI随机提升 OperationalError

  显示原文与译文双语对照的内容

我在运行一个 Django 应用程序。 在 Apache + mod_python下,就可以了。 切换到 Lighttpd + FastCGI 。 现在我随机得到了以下异常( 无论是地点还是时间似乎都是可以预测的) 。 由于它是随机的,并且它只在切换到FastCGI之后出现,所以我假设它与某些设置有关。

在googleing中发现一些结果,但它们似乎与设置maxrequests=1有关。 但是,我使用默认值,它是 0.

要找的地方?

我正在使用 sql 。可以能也与这里相关,因为在制作数据库查询时出现异常。


 File"/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 86, in get_response


 response = callback(request, *callback_args, **callback_kwargs)



 File"/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py", line 140, in root


 if not self.has_permission(request):



 File"/usr/lib/python2.6/site-packages/django/contrib/admin/sites.py", line 99, in has_permission


 return request.user.is_authenticated() and request.user.is_staff



 File"/usr/lib/python2.6/site-packages/django/contrib/auth/middleware.py", line 5, in __get__


 request._cached_user = get_user(request)



 File"/usr/lib/python2.6/site-packages/django/contrib/auth/__init__.py", line 83, in get_user


 user_id = request.session[SESSION_KEY]



 File"/usr/lib/python2.6/site-packages/django/contrib/sessions/backends/base.py", line 46, in __getitem__


 return self._session[key]



 File"/usr/lib/python2.6/site-packages/django/contrib/sessions/backends/base.py", line 172, in _get_session


 self._session_cache = self.load()



 File"/usr/lib/python2.6/site-packages/django/contrib/sessions/backends/db.py", line 16, in load


 expire_date__gt=datetime.datetime.now()



 File"/usr/lib/python2.6/site-packages/django/db/models/manager.py", line 93, in get


 return self.get_query_set().get(*args, **kwargs)



 File"/usr/lib/python2.6/site-packages/django/db/models/query.py", line 304, in get


 num = len(clone)



 File"/usr/lib/python2.6/site-packages/django/db/models/query.py", line 160, in __len__


 self._result_cache = list(self.iterator())



 File"/usr/lib/python2.6/site-packages/django/db/models/query.py", line 275, in iterator


 for row in self.query.results_iter():



 File"/usr/lib/python2.6/site-packages/django/db/models/sql/query.py", line 206, in results_iter


 for rows in self.execute_sql(MULTI):



 File"/usr/lib/python2.6/site-packages/django/db/models/sql/query.py", line 1734, in execute_sql


 cursor.execute(sql, params)



OperationalError: server closed the connection unexpectedly


 This probably means the server terminated abnormally


 before or while processing the request.



时间: 原作者:

在 switch 中,你是否更改了PostgreSQL客户端/服务器版本?

我已经看到php+mysql类似的问题,而且客户端/服务器版本之间的不兼容( 即使它们有相同的版本) 。

闻起来像一个可能的线程问题。 尽管文件文档中似乎表明/fcgi可以运行,但 Django 是 guaranteed线程安全 guaranteed 。 尝试使用prefork运行,然后在服务器上打败垃圾服务器。 如果问题不存在。

...