2016-06-09 2 views
0

У меня эта проблема в моем проекте django, который, я считаю, связан с кешами. Он появляется один раз каждые 6 месяцев или около того и «исправляется», перезагружая приложение, только чтобы вернуться через несколько месяцев. Внезапно все представления с этим исключением будут терпеть неудачу.слабый объект ушел? - python/django

TypeError: weak object has gone away 

И это не всегда один и тот же объект, каждый вид не работает, пытаясь получить доступ к другому объекту. В этом случае он обращается к пользователю (с request.user.is_authenticated()), но другие страницы его с другими объектами.

Я думаю, что с тайниками должно быть что-то не так. Может быть, это проблема даже в джанго. Я не знаю. Он просто отлично работает, пока он не делает, и никто не говорит об этом исключении в Интернете.

Вот пример отслеживающий:

Traceback (most recent call last): 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/core/handlers/base.py", line 88, in get_response 
    response = middleware_method(request) 

    File "/home/rsaenz/webapps/club/club/cms/socios/views.py", line 143, in process_request 
    if not request.user.is_authenticated(): 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/utils/functional.py", line 213, in inner 
    self._setup() 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/utils/functional.py", line 298, in _setup 
    self._wrapped = self._setupfunc() 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/contrib/auth/middleware.py", line 18, in <lambda> 
    request.user = SimpleLazyObject(lambda: get_user(request)) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/contrib/auth/middleware.py", line 10, in get_user 
    request._cached_user = auth.get_user(request) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/contrib/auth/__init__.py", line 140, in get_user 
    user_id = request.session[SESSION_KEY] 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py", line 47, in __getitem__ 
    return self._session[key] 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py", line 173, in _get_session 
    self._session_cache = self.load() 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py", line 20, in load 
    expire_date__gt=timezone.now() 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/manager.py", line 151, in get 
    return self.get_queryset().get(*args, **kwargs) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/query.py", line 301, in get 
    clone = self.filter(*args, **kwargs) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/query.py", line 593, in filter 
    return self._filter_or_exclude(False, *args, **kwargs) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/query.py", line 611, in _filter_or_exclude 
    clone.query.add_q(Q(*args, **kwargs)) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1204, in add_q 
    clause = self._add_q(where_part, used_aliases) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1240, in _add_q 
    current_negated=current_negated) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1131, in build_filter 
    clause.add(constraint, AND) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/utils/tree.py", line 104, in add 
    data = self._prepare_data(data) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/db/models/sql/where.py", line 61, in _prepare_data 
    if is_iterator(value): 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/site-packages/django/utils/itercompat.py", line 30, in is_iterator 
    return isinstance(x, collections.Iterator) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/abc.py", line 144, in __instancecheck__ 
    return cls.__subclasscheck__(subtype) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/abc.py", line 184, in __subclasscheck__ 
    cls._abc_negative_cache.add(subclass) 

    File "/home/rsaenz/virtualenvs/club/lib/python2.7/_weakrefset.py", line 86, in add 
    self.data.add(ref(item, self._remove)) 

TypeError: weak object has gone away 

спасибо!

ответ

0

Основываясь на трассировке, это больше похоже на вопрос Python weakrefset, который collections.Iterator опирается на модуль abc (Абстрактный базовый класс).

+0

так как вы думаете, решение будет? Если это проблема с python, мне нужно будет вообще избегать этих кешей? –

+0

Трудно сказать. Вы используете здесь пушки? –