2011-09-01 18 views
5

Geçenlerde python2.7 ve django1.3 yükseltilmiş ve daha sonraDjango istisna, hata ayıklama nasıl bilmiyorum o

Unhandled exception in thread started by <bound method Command.inner_run of <django.core.management.commands.runserver.Command object at 0x109c57490>> 
Traceback (most recent call last): 
    File "/Users/ApPeL/.virtualenvs/myhunt/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 88, in inner_run 
     self.validate(display_num_errors=True) 
    File "/Users/ApPeL/.virtualenvs/myhunt/lib/python2.7/site-packages/django/core/management/base.py", line 249, in validate 
     num_errors = get_validation_errors(s, app) 
    File "/Users/ApPeL/.virtualenvs/myhunt/lib/python2.7/site-packages/django/core/management/validation.py", line 36, in get_validation_errors 
     for (app_name, error) in get_app_errors().items(): 
    File "/Users/ApPeL/.virtualenvs/myhunt/lib/python2.7/site-packages/django/db/models/loading.py", line 146, in get_app_errors 
     self._populate() 
    File "/Users/ApPeL/.virtualenvs/myhunt/lib/python2.7/site-packages/django/db/models/loading.py", line 67, in _populate 
     self.write_lock.release() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 137, in release 
     raise RuntimeError("cannot release un-acquired lock") 
    RuntimeError: cannot release un-acquired lock 

ettiğimden beri yardım büyük mutluluk duyacağız.

+0

Hangi sürüme yükseltme yaptınız? Ayrıca, hata ne zaman gerçekleşir? – d0ugal

+0

Django 1.1.2 ve python 2.6 – ApPeL

+0

yeni virtualenv kullanıyor musunuz yoksa hala yükseltmeden önceki ile aynı mı? – yedpodtrzitko

cevap

1

Her zamanki ilk öneri, en son güncellemeleri gevent veya greenlet'e veya thread'larla ilgili olarak kullandığınız şeylere uygulamaktır. Threading.Thread.start uygulaması Python 2.6 ve 2.7 arasında değiştirildi. Django ile yeşil ya da yeşil ... nasıl başlayacak birçok yemek tarifi var. Python 2.7 için herhangi bir yeni okumaya çalışın. ve problemi yapan bir link gönderin.

Hata ayıklama: dişin günlüğü stderr'e vb başlamak etkinleştirmek için manage.py satır aşağıdaki Ekleme: ipler kazanmak Ne de görmek için django/db/loading.py hattına 39 argümanı verbose ekle

import threading 
setattr(threading, '__debug__', True) 

ve kilidi serbest bırak. Geliştirme sunucusunu çalıştırın.

-  write_lock = threading.RLock(), 
+  write_lock = threading.RLock(verbose=True), 

Geliştirme sunucusunu çalıştırın.

$ python manage.py runserver --noreload 
Validating models... 

MainThread: <_RLock owner='MainThread' count=1>.acquire(1): initial success 
MainThread: <_RLock owner=None count=0>.release(): final release 

Notlar: Autoreload olmadan tek iplik için gibi bir şey görmelisiniz
count=1 acquire(1) - İlk acquire engelleyen bir kilit
owner=None count=0>.release() tarafından - Kilit şu anda kilitli ediliyor

$ python manage.py runserver 
Validating models... 

Dummy-1: <_RLock owner=-1222960272 count=1>.acquire(1): initial success 
Dummy-1: <_RLock owner=None count=0>.release(): final release 

Bu, otomatik yükleme ile aynıdır. Modeller çocuk süreci tarafından doğrulanır. "Dummy-1", iş parçacığının sembolik bir adıdır. Bu, daha fazla iş parçacığı için tekrarlanabilir, ancak hiçbir iş parçacığı, önceki iş parçacığı tarafından serbest bırakılıncaya kadar kilidi almalıdır/alabilir. Sonuçlara göre devam edebiliriz.

İlgili konular