2011-09-01 7 views
5

Recentemente ho aggiornato a python2.7 e django1.3 e da alloraDjango eccezione bugging me, non so come eseguire il debug è

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 

Il vostro aiuto sarebbe molto apprezzato.

+0

Da quale versione è stato aggiornato? Inoltre, quando si verifica l'errore? – d0ugal

+0

Django 1.1.2 e python 2.6 – ApPeL

+0

si utilizza virtualenv fresco o è ancora lo stesso di prima dell'aggiornamento? – yedpodtrzitko

risposta

1

Un consueto primo consiglio è quello di applicare gli ultimi aggiornamenti a gevent o greenlet o quello che si usa in relazione ai thread. Implementazione del threading.Thread.start è stato modificato tra Python 2.6 e 2.7. Ci sono molte ricette su come iniziare il verde ... o il verde ... con Django. Prova a leggere qualsiasi recente per Python 2.7. e invia un link che fa il problema.

Debug: Add seguenti righe al manage.py per attivare la registrazione di inizio della discussione ecc per stderr:

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

Aggiungere l'argomento verbose-django/db/loading.py linea 39 per vedere anche quello che le discussioni e acquisiscono rilasciare il lucchetto.

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

server di sviluppo Run. Per un solo thread senza autoreload si dovrebbe vedere qualcosa di simile:

$ 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 

Note:
count=1 acquire(1) - la prima acquisire da una serratura di bloccaggio
owner=None count=0>.release() - il blocco è attualmente in fase sbloccato

$ 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 

Questo è lo stesso con il caricamento automatico. I modelli sono convalidati dal processo figlio. "Dummy-1" è un nome simbolico del thread. Questo può essere ripetuto per più thread, ma nessun thread dovrebbe/può acquisire il lock fino a quando non viene rilasciato dal thread precedente. Possiamo continuare secondo i risultati.

Problemi correlati