django-keyedcache: NameError: глобальное имя 'tid' не определено - PullRequest
2 голосов
/ 29 августа 2011

Не могу указать на эту ошибку. В других частях приложения он работает нормально, но не в этом, единственное, что отличается тем, что этот код выполняется на многопоточном сервере, в то время как другой выполняется на предварительно разветвленном. С другой стороны, на другом рабочем сервере он отлично работает и на многопоточном сервере.

File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 111, in get_response
  response = callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python2.6/site-packages/django/views/decorators/http.py", line 45, in inner
  return func(request, *args, **kwargs)

File "/home/asia/myfilm/torrent/tracker.py", line 138, in announce
  announce_interval = cache_get(ck)

File "/home/asia/myfilm/keyedcache/__init__.py", line 207, in cache_get
  cache_set_request(key, obj, uid=tid)

File "/home/asia/myfilm/keyedcache/__init__.py", line 329, in cache_set_request
  REQUEST_CACHE[uid][key] = val

NameError: global name 'tid' is not defined

Часть кода, вызывающая это исключение (около строки 207):

    obj = None
    tid = -1
    if REQUEST_CACHE['enabled']:
        tid = cache_get_request_uid()
        if tid > -1:
            try:
                obj = REQUEST_CACHE[tid][key]
                log.debug('Got from request cache: %s', key)
            except KeyError:
                pass

    if obj == None:
        obj = cache.get(key)

    if obj and isinstance(obj, CacheWrapper):
        CACHE_HITS += 1
        CACHED_KEYS[key] = True
        log.debug('got cached [%i/%i]: %s', CACHE_CALLS, CACHE_HITS, key)
        if obj.inprocess:
            raise MethodNotFinishedError(obj.val)

        cache_set_request(key, obj, uid=tid)

и ниже (около строки 329):

def cache_set_request(key, val, uid=None):
    if uid == None:
        uid = cache_get_request_uid()

    if uid>-1:
        global REQUEST_CACHE
        if not uid in REQUEST_CACHE:
            REQUEST_CACHE[uid] = {key:val}
        else:
            REQUEST_CACHE[uid][key] = val

Насколько я вижу, там определен тид, я не вижу причины проблемы.

1 Ответ

0 голосов
/ 08 сентября 2011

Похоже, мои настройки были недействительными.Старые файлы .pyc и т. Д. На самом деле это было немного сложнее, но, тем не менее, теперь это работает.Извините за возможную путаницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...