2
無法將我的手指放在此錯誤上。在應用程序的其他部分,它可以正常工作,但不是在這一部分中,唯一不同的是,此代碼在線程服務器中運行,而另一部分在預先運行時運行。另一方面,在另一臺生產服務器上,它也可以在線程服務器上正常工作。django-keyedcache:NameError:全局名稱'tid'未定義
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
至於我可以看到,工業貿易署在那裏定義,我不明白是什麼導致了問題。
哪裏定義了REQUEST_CACHE?它在'cache_get'函數中標記爲'global'嗎? –
@ roman-bodnarchuk它在頂層定義如下:REQUEST_CACHE = {'enabled':False},並在cache_get中標記爲全局 – Andrey