ipdb、多线程和自动重新加载程序导致ProgrammingError

2024-02-24

我正在使用 ipdb 调试器在本地调试多线程 Web 应用程序(Django、Plone)。通常 ipdb 似乎会因为我在调试提示符下时发生的自动重新加载而感到困惑。结果堆栈跟踪出现

/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 写入。


您始终可以在单线程模式下运行 Django

python manage.py runserver --nothreading
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ipdb、多线程和自动重新加载程序导致ProgrammingError 的相关文章

随机推荐

  • pycosat中慢速dnf到cnf

    问题简述 有一个适当的输入pycosat https pypi org project pycosat 有没有办法加速从dnf到cnf的计算 或者完全绕过它 详细问题 我一直在看这个视频 https www youtube com watc
  • ARC 相当于自动释放?

    如果我有这个代码 MyCustomClass myCustomClass return MyCustomClass alloc init autorelease 这段代码保证返回的对象是自动释放的 在 ARC 中相当于什么 ARC 中没有类
  • HTTP PUT 的查询参数的 Curl 命令行编码

    我有多个查询参数想要使用curl 在 HTTP PUT 操作中发送 如何对查询参数进行编码 例子 curl X PUT http example com resource 1 param1 value 201 param2 value2 如
  • 如何使用 Express 和 connect-timeout 自定义超时响应?

    我想自定义在触发超时错误时发送给用户的响应 更具体地说 我想将它们重定向到静态页面 解释为什么会引发超时错误 我想写一些类似的东西 var express require express var timeout require connec
  • Laravel 无法验证用户身份

    userdata array email gt Input get email password gt Input get password if Auth attempt userdata echo SUCCESS else return
  • 格式化没有这样的文件或目录

    我试图使用 C 格式实用程序 std format 我尝试编译这个简单的程序 include
  • Cassandra 中分区键、复合键和集群键之间的区别?

    我一直在网上阅读文章以了解以下内容之间的差异key类型 但这对我来说似乎很难理解 例子肯定有助于更好地理解 primary key partition key composite key clustering key 对此有很多困惑 我会尽
  • 使用 jQuery,如何选择元素 id 以某个字符串结尾的所有元素?

    使用jQuery 如何选择其中的所有元素id属性以某个字符串结尾 有一个属性结尾为选择器 attr value http api jquery com attribute ends with selector 像这样 id somethin
  • 当重叠很少时找到重叠间隔

    我有一个巨大的数据库表n整数区间 例如 1 5 4 16 6434 114343 并且需要找出哪些间隔相互重叠 有丰富的SO的类似问题 https stackoverflow com questions 4542892 possible i
  • 为什么单字母 UDF 名称不能使用 C 或 R?

    我可以编写以下有效的 VBA 函数 Public Function C As Long C 5 End Function Public Function R As Long R 6 End Function 但如果不使用 VBA 项目或模块
  • 为什么将列表作为参数传递比传递生成器性能更好?

    我正在回答这个问题 https stackoverflow com questions 59925390 how to count different elements in list of lists 59925564 noredirec
  • 将点平面分成相等的两半[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定一个二维平面 其中有 n 个点 我需要生成一条线的方程 该线将平面分开 使得一侧有 n 2 个点 另一侧有 n 2 个点 我假设这些点
  • Rails - params[:commit] 的目的是什么

    我注意到 每次将 Rails 表单发送到服务器时 提交按钮的名称 通常是按钮上显示的字符串 都会包含在params散列为 提交 例如 最后一个条目 utf8 gt authenticity token gt eZABpBuW7afziDMU
  • 字符串函数如何计算字符串行中的分隔符

    我有一个如下所示的字符串行 A B C D E F G H I J K L M 这意味着分隔符 计数为 12 这条线是有效的 现在假设您有以下行 A B C D E F G H 该行也是有效的 因为它包含 12 个分隔符 其中存在 8 个值
  • Grails 和 SQLite

    尝试让 SQLite 与 grails 一起工作 我在网上找到的东西似乎有点过时 对 ivy 和插件等的引用 但基于这些 http stackoverflow com questions 1199512 grails sqlite http
  • 为什么js字符串中的标签会被验证

    我有以下页面 在我的对象的 someHTML 属性中字符串中的标签 但浏览器将其读取为实际的关闭标记并关闭脚本元素 我在
  • 比较 jQuery 对象

    我正在使用选择器来获取一组对象 0 个或更多 var openMenus Triggers filter trigger hover 然后我有一个事件附加到一个项目 该项目可能位于也可能不位于上面的对象中 在该事件中 我想将触发事件的项目与
  • Rails 3 禁用会话 cookie

    我在 RoR 3 上编写了 RESTful API 我必须使我的应用程序不发送 Set Cookie header 客户端使用 auth token 参数进行授权 我尝试过使用session off and reset session但这没
  • 在应用程序中插入“在 iTunes 上下载”按钮

    我的应用程序显示某首歌曲的标题 我想插入一个 在 iTunes 上下载 按钮 该按钮可以在我的 iPhone 上打开 iTunes 并指向我的歌曲 我已经使用以下命令检索了正确的 iTunes 网址iTunes 链接制作工具 http it
  • ipdb、多线程和自动重新加载程序导致ProgrammingError

    我正在使用 ipdb 调试器在本地调试多线程 Web 应用程序 Django Plone 通常 ipdb 似乎会因为我在调试提示符下时发生的自动重新加载而感到困惑 结果堆栈跟踪出现 Users mikko code xxxx venv li