2011-09-01 10 views
5

मैं हाल ही में python2.7 और django1.3 करने के लिए उन्नत और फिरDjango अपवाद मुझे गुस्सा दिलाना, कैसे डिबग करने के लिए नहीं जानता कि यह

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 

के बाद से आपका मदद बहुत सराहना की जाएगी।

+0

आपने किस संस्करण से अपग्रेड किया था? इसके अलावा, त्रुटि कब होती है? – d0ugal

+0

Django 1.1.2 और पायथन 2.6 – ApPeL

+0

क्या आप ताजा वर्चुअलनव का उपयोग करते हैं या यह अभी भी अपग्रेड के समान ही है? – yedpodtrzitko

उत्तर

1

एक सामान्य पहली सिफारिश गीवेन्ट या ग्रीनलेट या थ्रेड से संबंधित उपयोग के लिए नवीनतम अपडेट लागू करना है। थ्रेडिंग का कार्यान्वयन। Python 2.6 और 2.7 के बीच .read.start बदल दिया गया है। Django के साथ हरे रंग की शुरू करने के लिए कई व्यंजन हैं ... या हरा ... पाइथन 2.7 के लिए हाल ही में पढ़ने की कोशिश करें। और एक लिंक भेजें जो कोई समस्या बनाता है।

डिबगिंग: अपने manage.py लिए लाइनों धागे की लॉगिंग stderr करने के लिए आदि शुरू करने के लिए सक्षम करने के लिए निम्न जोड़ें:

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

क्रम में django/db/loading.py लाइन 39 को तर्क verbose जोड़े भी देखने के लिए धागे क्या प्राप्त करते हैं और ताला छोड़ो।

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

विकास सर्वर चलाएं।

$ 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 

नोट्स:: autoreload बिना केवल एक ही धागे के लिए आप की तरह कुछ देखना चाहिए - एक अवरुद्ध ताला
owner=None count=0>.release() से पहले अधिग्रहण -
count=1 acquire(1) ताला वर्तमान में अनलॉक कर दिया जा रहा है

$ 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 

यह ऑटोरेलोड के साथ ही है। मॉडल को बाल प्रक्रिया द्वारा मान्य किया जाता है। "डमी -1" धागे का प्रतीकात्मक नाम है। इसे अधिक धागे के लिए दोहराया जा सकता है, लेकिन जब तक यह पिछले धागे द्वारा जारी नहीं किया जाता है तब तक कोई थ्रेड लॉक प्राप्त नहीं कर सकता/चाहिए। हम परिणामों के अनुसार जारी रख सकते हैं।

संबंधित मुद्दे