【问题标题】:What might be causing MySQL to hang my Python script?什么可能导致 MySQL 挂起我的 Python 脚本?
【发布时间】:2016-03-03 15:15:59
【问题描述】:

我有一个非常简单的 Python 脚本。它启动了一个由 10 个进程组成的池,每个进程:

  1. 为 1000 条记录发出外部 API 请求
  2. 解析 XML 响应
  3. 将每条记录插入 MySQL 数据库

这里没有什么特别棘手的地方,但是当我达到 90,000 条记录时,脚本会挂起。

mysql> show processlist;
+----+------+-----------------+---------------+---------+------+-------+------------------+
| Id | User | Host            | db            | Command | Time | State | Info             |
+----+------+-----------------+---------------+---------+------+-------+------------------+
| 44 | root | localhost:48130 | my_database | Sleep   |   57 |       | NULL             |
| 45 | root | localhost:48131 | NULL          | Sleep   |    6 |       | NULL             |
| 59 | root | localhost       | my_database | Sleep   |  506 |       | NULL             |
| 60 | root | localhost       | NULL          | Query   |    0 | NULL  | show processlist |
+----+------+-----------------+---------------+---------+------+-------+------------------+

我有大约一百万条记录要导入,所以我还有很长的路要走。

我可以做些什么来防止这种挂起并保持我的脚本移动?

Python 2.7.6
MySQL-python 1.2.5

【问题讨论】:

  • 您连接数据库的方式和频率如何? (即,您是否在做一些愚蠢的事情,例如为每个记录写入建立单独的数据库连接?)
  • 看看脚本会有帮助。
  • @JohnGordon 原来没有。我在脚本开始时打开连接,在脚本结束时完成工作并关闭连接。我只是尝试打开和关闭每个操作的连接(愚蠢的东西),实际上这让我更进一步。
  • 可能是外部 API 限制了您的请求?您的脚本是否在 API 读取、XML 解析或 DB 写入时挂起?
  • 数据库写入是问题所在,但到目前为止,在有限的测试中,当我边走边打开和关闭时,它似乎不是问题。我讨厌这样做,但也许我可以调整一个超时设置。我会调查的。我很确定这是一个 MySQL 问题(不是 Python),但我想在帖子中包含上下文。

标签: python mysql python-2.7


【解决方案1】:

不完全是我想要做的,但我发现根据需要打开和关闭连接似乎可以推动事情的发展。

【讨论】:

    猜你喜欢
    • 2014-07-05
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    相关资源
    最近更新 更多