2013-05-16 55 views
5

neden birden çok iş parçacığı ve autoreloading programları. Genellikle ipdb, hata ayıklama isteminde olduğumda gerçekleşen autoreload nedeniyle karışmış görünüyor. Elde edilen yığın izlemesi Bundan sonraipdb, ben yerel olarak (Django Plone) çok iş parçacıklı web uygulamalarını hata ayıklamak için hata ayıklayıcı ipdb kullanıyorum ProgrammingError

/Users/mikko/code/xxxx/venv/lib/python2.7/site-packages/IPython/core/history.pyc in writeout_cache(self, conn) 
     605   with self.db_input_cache_lock: 
     606    try: 
    --> 607     self._writeout_input_cache(conn) 
     608    except sqlite3.IntegrityError: 
     609     self.new_session(conn) 

    /Users/mikko/code/xxxx/venv/lib/python2.7/site-packages/IPython/core/history.pyc in _writeout_input_cache(self, conn) 
     589    for line in self.db_input_cache: 
     590     conn.execute("INSERT INTO history VALUES (?, ?, ?, ?)", 
    --> 591         (self.session_number,)+line) 
     592 
     593  def _writeout_output_cache(self, conn): 

    ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 4546363392 and this is thread id 140735211872640 

gelir, ya da programı (mesajları asılı) kapalı olamaz veya kendi ipdb çalışmayı durdurur.

ipdb bu konuyu migitate ve daha çok iplikli/Autoreload güvenli hale getirmek için bir yol var mı?

EDIT: Sorunun, bu IPython sorunlarının altında olabileceğine inandığım gibi, biraz açıklığa kavuşturuldu. IPython'u yeniden yüklemek veya problemsiz IPython SQLite geçmişini atmak için basit bir yöntem yazmak gibi bir takım bir çözüm olabilir.

cevap

5

Hep Tek iş parçacıklı modda Django çalıştırabilirsiniz

python manage.py runserver --nothreading