2016-03-03 2 views
1

У меня довольно простой скрипт Python. Он пинает пул 10 процессов, каждый:Что может заставить MySQL повесить мой скрипт Python?

  1. Сделать запрос внешнего API для 1000 записей
  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 
+0

Как и как часто вы подключаетесь к базе данных? (т. е. вы делаете что-то глупое, как создание отдельного подключения к базе данных для записи каждой записи?) –

+0

Это поможет увидеть скрипт. – tomlester

+0

@JohnGordon Первоначально нет. Я открыл соединение в начале скрипта, выполняя работу и закрывая соединение в конце скрипта. Я просто попытался открыть и закрыть связь с каждой операцией (глупым материалом), и на самом деле это привело меня к себе. –

ответ

0

Не совсем то, что я хотел сделать, но я обнаружил, что открытие и закрытие соединения по мере необходимости, похоже, перемещает вещи.

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