datos - ¿Cómo puedo cambiar el tiempo de espera predeterminado de la conexión Mysql cuando me conecto a través de python?
pymysql (3)
Cambia el valor predeterminado en el archivo de configuración de MySQL (opción connect_timeout en la sección mysqld ) -
[mysqld]
connect_timeout=100
Si no puede acceder a este archivo, puede establecer este valor con esta instrucción:
SET GLOBAL connect_timeout=100;
Me conecté a una base de datos mysql usando python con = _mysql.connect(''localhost'', ''dell-pc'', '''', ''test'')
El programa que escribí lleva mucho tiempo en ejecución completa, es decir, alrededor de 10 horas. En realidad, estoy tratando de leer palabras distintas de un corpus. Después de terminar la lectura, hubo un error de tiempo de espera.
Comprobé los tiempos de espera predeterminados de Mysql que eran:
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+----------+
¿Cómo puedo cambiar el tiempo de espera predeterminado?
Hacer:
con.query(''SET GLOBAL connect_timeout=28800'')
con.query(''SET GLOBAL wait_timeout=28800'')
con.query(''SET GLOBAL interactive_timeout=28800'')
Significado del parámetro (tomado de MySQL Workbench en Navigator: instancia> archivo de opciones> pestaña "Redes"> sección "Configuración de tiempo de espera")
- connect_timeout : el número de segundos que el servidor mysqld espera para un paquete de conexión antes de responder con ''Bad handshake''
- interactive_timeout Número de segundos que el servidor espera la actividad en una conexión interactiva antes de cerrarla
- wait_timeout Número de segundos que el servidor espera actividad en una conexión antes de cerrarla
Por cierto: 28800 segundos son 8 horas, por lo que para un tiempo de ejecución de 10 horas estos valores deberían ser realmente mayores.
Sé que esta es una pregunta antigua pero solo para el registro, esto también se puede hacer pasando las opciones de conexión apropiadas como argumentos a la llamada _mysql.connect
. Por ejemplo,
con = _mysql.connect(host=''localhost'', user=''dell-pc'', passwd='''', db=''test'',
connect_timeout=1000)
Observe el uso de los parámetros de palabra clave (host, contraseña, etc.). Mejoran la legibilidad de tu código.
Para obtener detalles sobre los diferentes argumentos que puede pasar a _mysql.connect
, consulte la documentación de la API MySQLdb