Mysql
 sql >> Baza danych >  >> RDS >> Mysql

python Przekroczono limit czasu zapytania MySQLDB

zakręcone rozwiązanie @nosklo jest eleganckie i wykonalne, ale jeśli chcesz uniknąć zależności od twisted, zadanie jest nadal wykonalne, np.:

import multiprocessing

def query_with_timeout(dbc, timeout, query, *a, **k):
  conn1, conn2 = multiprocessing.Pipe(False)
  subproc = multiprocessing.Process(target=do_query,
                                    args=(dbc, query, conn2)+a, 
                                    kwargs=k)
  subproc.start()
  subproc.join(timeout)
  if conn1.poll():
    return conn1.recv()
  subproc.terminate()
  raise TimeoutError("Query %r ran for >%r" % (query, timeout))

def do_query(dbc, query, conn, *a, **k):
  cu = dbc.cursor()
  cu.execute(query, *a, **k)
  return cu.fetchall()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Po co używać VARCHAR(20) zamiast VARCHAR(255)?

  2. Mieszanie sprzężeń ANSI 1992 i przecinków w zapytaniu

  3. Jak bezpiecznie przechowywać pliki na serwerze?

  4. Instalacja MySQL:BŁĄD:Nie udało się zbudować natywnego rozszerzenia gem

  5. Czy jest coś nie tak ze złączeniami, które nie używają słowa kluczowego JOIN w SQL lub MySQL?