Django操作错误:无法为连接派生新进程

Django操作错误:无法为连接派生新进程,django,postgresql,heroku,out-of-memory,Django,Postgresql,Heroku,Out Of Memory,在昨天让Django storages、Boto和Django compressor将静态文件放在S3上之后,我今天早上开始在生产环境中遇到这个错误,尽管我不知道这是否相关 OperationalError: could not fork new process for connection: Cannot allocate memory could not fork new process for connection: Cannot allocate memory could not fo

在昨天让Django storages、Boto和Django compressor将静态文件放在S3上之后,我今天早上开始在生产环境中遇到这个错误,尽管我不知道这是否相关

OperationalError: could not fork new process for connection: Cannot allocate memory

could not fork new process for connection: Cannot allocate memory
could not fork new process for connection: Cannot allocate memory


Stacktrace (most recent call last):

  File "django/core/handlers/base.py", line 89, in get_response
    response = middleware_method(request)
  File "reversion/middleware.py", line 17, in process_request
    if hasattr(request, "user") and request.user.is_authenticated():
  File "django/utils/functional.py", line 184, in inner
    self._setup()
  File "django/utils/functional.py", line 248, in _setup
    self._wrapped = self._setupfunc()
  File "django/contrib/auth/middleware.py", line 16, in <lambda>
    request.user = SimpleLazyObject(lambda: get_user(request))
  File "django/contrib/auth/middleware.py", line 8, in get_user
    request._cached_user = auth.get_user(request)
  File "django/contrib/auth/__init__.py", line 98, in get_user
    user_id = request.session[SESSION_KEY]
  File "django/contrib/sessions/backends/base.py", line 39, in __getitem__
    return self._session[key]
  File "django/contrib/sessions/backends/base.py", line 165, in _get_session
    self._session_cache = self.load()
  File "django/contrib/sessions/backends/db.py", line 19, in load
    expire_date__gt=timezone.now()
  File "django/db/models/manager.py", line 131, in get
    return self.get_query_set().get(*args, **kwargs)
  File "django/db/models/query.py", line 361, in get
    num = len(clone)
  File "django/db/models/query.py", line 85, in __len__
    self._result_cache = list(self.iterator())
  File "django/db/models/query.py", line 291, in iterator
    for row in compiler.results_iter():
  File "django/db/models/sql/compiler.py", line 763, in results_iter
    for rows in self.execute_sql(MULTI):
  File "django/db/models/sql/compiler.py", line 817, in execute_sql
    cursor = self.connection.cursor()
  File "django/db/backends/__init__.py", line 308, in cursor
    cursor = util.CursorWrapper(self._cursor(), self)
  File "django/db/backends/postgresql_psycopg2/base.py", line 177, in _cursor
    self.connection = Database.connect(**conn_params)
  File "psycopg2/__init__.py", line 178, in connect
    return _connect(dsn, connection_factory=connection_factory, async=async)
操作错误:无法为连接派生新进程:无法分配内存
无法为连接派生新进程:无法分配内存
无法为连接派生新进程:无法分配内存
Stacktrace(最近一次呼叫最后一次):
get_响应中的第89行文件“django/core/handlers/base.py”
响应=中间件\方法(请求)
文件“reversion/middleware.py”,第17行,处理中的请求
如果hasattr(请求,“用户”)和request.user.is\u经过身份验证():
文件“django/utils/functional.py”,第184行,在内部
self.\u设置()
文件“django/utils/functional.py”,第248行,在设置中
self.\u wrapped=self.\u setupfunc()
文件“django/contrib/auth/middleware.py”,第16行,在
request.user=SimpleLazyObject(lambda:get_user(request))
文件“django/contrib/auth/middleware.py”,第8行,在get_user中
请求。_cached_user=auth.get_user(请求)
文件“django/contrib/auth/\uuuuu init\uuuuuu.py”,第98行,在get\u user中
user\u id=request.session[session\u KEY]
文件“django/contrib/sessions/backends/base.py”,第39行,在__
返回self.\u会话[键]
文件“django/contrib/sessions/backends/base.py”,第165行,在会话中
self.\u session\u cache=self.load()
加载文件“django/contrib/sessions/backends/db.py”,第19行
expire\u date\uu gt=timezone.now()
get中第131行的文件“django/db/models/manager.py”
返回self.get\u query\u set().get(*args,**kwargs)
get中第361行的文件“django/db/models/query.py”
num=len(克隆)
文件“django/db/models/query.py”,第85行,在__
self.\u result\u cache=list(self.iterator())
迭代器中第291行的文件“django/db/models/query.py”
对于编译器.results\u iter()中的行:
文件“django/db/models/sql/compiler.py”,第763行,在results\u iter中
对于self.execute_sql(多)中的行:
文件“django/db/models/sql/compiler.py”,第817行,在execute_sql中
cursor=self.connection.cursor()
文件“django/db/backends/_init__.py”,第308行,在游标中
cursor=util.CursorWrapper(self.\u cursor(),self)
文件“django/db/backends/postgresql\u psycopg2/base.py”,第177行,在光标处
self.connection=数据库.connect(**conn_参数)
文件“psycopg2/_init__.py”,第178行,在connect中
返回连接(dsn,连接工厂=连接工厂,异步=异步)
我正在Heroku上部署该站点。在我重新启动应用程序后,它会工作一段时间,但几分钟后又停止工作


想知道是什么原因导致了这种情况吗?

我在heroku上用postgresql数据库建立一个简单的django web应用程序时遇到了同样的问题,并设法解决了这个问题

我不完全理解这个错误,但修复方法相当简单:当您将查询创建的python列表传递到数据库时,需要限制列表的大小

例如,如果您作为上下文传递以下列表:

set\u list=userSetTable.objects.all()

返回呈现(请求'fc/user.html',{'set\u list':set\u list,})

这将导致错误,因为集合列表可能非常大。您需要指定最大大小:

set_list = userSetTable.objects.all()[0:20]

因此,在现实世界的应用程序中,您可能希望将列表显示为页面结果或其他内容。。。你明白了。

你有数据库连接问题(obl)。Google gove me如果你联系Heroku技术支持,这个链接会更好。@b1啊,谢谢,我刚才不知怎么解决了它,但忘了更新答案,不记得我是怎么解决的了!