5

昨日、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)

サイトを Heroku にデプロイしています。アプリケーションを再起動するとしばらくは機能しますが、数分後に再び機能しなくなります。

これを引き起こしている可能性のあるものについてのアイデアはありますか?

4

1 に答える 1

3

herokuでpostgresqlデータベースを使用して単純なdjango Webアプリケーションをセットアップしようとして同じ問題に遭遇し、なんとか解決しました。

私はエラーを完全には理解していませんが、修正は非常に簡単です: クエリによって作成された python リストをデータベースに渡すときは、リストのサイズを制限する必要があります。

たとえば、次のリストをコンテキストとして渡す場合:

set_list = userSetTable.objects.all()

return render(request, 'fc/user.html', {'set_list': set_list,})

set_list が非常に大きい可能性があるため、エラーが発生します。最大サイズを指定する必要があります:

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

したがって、実際のアプリケーションでは、リストをページの結果などとして表示したい場合があります...要点はわかります。

于 2013-03-24T22:23:22.880 に答える