У меня довольно простой скрипт Python. Он пинает пул 10 процессов, каждый:Что может заставить MySQL повесить мой скрипт Python?
- Сделать запрос внешнего API для 1000 записей
- анализирует ответ XML
- Вставки каждая запись в базу данных 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
Как и как часто вы подключаетесь к базе данных? (т. е. вы делаете что-то глупое, как создание отдельного подключения к базе данных для записи каждой записи?) –
Это поможет увидеть скрипт. – tomlester
@JohnGordon Первоначально нет. Я открыл соединение в начале скрипта, выполняя работу и закрывая соединение в конце скрипта. Я просто попытался открыть и закрыть связь с каждой операцией (глупым материалом), и на самом деле это привело меня к себе. –