python多线程自动程序_ipdb,多线程和自动加载程序导致编程

在使用IPDB调试多线程Django或Plone应用时,遇到因自动加载导致的编程问题。IPython的history模块在多线程环境中引发错误,导致编程错误和调试中断。目前寻求解决方案,可能涉及IPython配置以避免sqlite写入冲突。
摘要由CSDN通过智能技术生成

我使用ipdb调试器在本地调试多线程web应用程序(Django,Plone)。通常ipdb看起来很困惑,因为autoreload发生在我在调试提示时。产生的堆栈跟踪出现/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解决这个问题,使它更安全地使用多线程/自动加载?在

编辑:稍微澄清了这个问题,因为我相信这可能是IPython的潜在问题。有一些解决方法可以让IPython在重新加载时简单地丢弃历史记录,或者以其他方式禁用有问题的ipythonsqlite写入。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值