2013-05-16 7 views
5

Я использую отладчик ipdb для локального отладки многопоточных веб-приложений (Django, Plone). Часто ipdb кажется запутанным из-за автозагрузки, которая возникает, когда я нахожусь в подсказке отладки. В результате трассировки стека приходитipdb, несколько потоков и программы автозагрузки, вызывающие 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 

После этого, либо программа не может быть закрыта (висит темы) или IPDB сам по себе перестает работать.

Есть ли способ устранить эту проблему с помощью ipdb и сделать ее более многопотоковой/автозагрузкой безопасной?

EDIT: Уточненный вопрос немного, так как я считаю, что это могут быть проблемы с IPython. Может быть какое-то обходное решение с тем, чтобы IPython просто отбрасывал историю при перезагрузке или отключении проблемного IPython SQLite, пишет каким-то другим способом.

ответ

5

Вы всегда можете запустить Django в режиме однотридовой

python manage.py runserver --nothreading 

 Смежные вопросы

  • Нет связанных вопросов^_^