2012-12-23 8 views
5

Dziś rano zacząłem dostawać ten błąd w środowisku produkcyjnym, po tym, jak wczoraj udało mi się załadować Django-magazyny, Boto i Django-kompresor, aby wczytać statyczne pliki na S3, chociaż ja nie wiem, czy jest to powiązane ...Django OperationalError: nie mógł rozwidlić nowego procesu dla połączenia

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) 

Witryna jest wdrażana na Heroku. Trochę działa po ponownym uruchomieniu aplikacji, ale przestaje działać po kilku minutach.

Jakieś pomysły na co może być przyczyną?

+1

Masz problemy z połączeniem DB (obl). Google udostępnił mi ten link http://www.postgresql.org/message-id/[email protected] Lepiej będzie, jeśli skontaktujesz się z pomocą techniczną Heroku. – nk9

+0

@ b1 Ahh, dziękuję, jakoś rozwiązałem to jakiś czas temu, ale zapomniałem zaktualizować odpowiedź i nie pamiętam, jak już to rozwiązałem! – wrongusername

Odpowiedz

3

Napotkałem ten sam problem, próbując skonfigurować prostą aplikację internetową django z bazą danych postgresql na heroku i udało się ją rozwiązać.

nie w pełni zrozumieć ten błąd naprawić, ale jest dość prosta: gdy jesteś przejazdem list Pythona utworzone przez zapytań do bazy danych, trzeba ograniczyć rozmiar listy.

Tak na przykład, jeśli jesteś przejazdem w kontekście następującą listę:

set_list = userSetTable.objects.all()

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

To spowoduje błąd, ponieważ może set_list być naprawdę duże. Należy określić maksymalny rozmiar:

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

Więc w aplikacji w rzeczywistym świecie, może chcesz wyświetlić listę jako stronie wyników lub cokolwiek innego ... masz rację.

Powiązane problemy