Я хочу запустить чей-то SQL-запрос в новом потоке:
#!/usr/bin/env ruby
require 'mysql2'
require 'sequel'
CONF = {
adapter: 'mysql2',
encoding: 'utf8',
username: 'ruby',
password: 'ruby',
host: 'localhost',
port: 3306,
pool: 4,
read_timeout: 10,
write_timeout: 10,
connect_timeout: 10,
pool_timeout: 10,
database: 'demo',
max_conns: 7
}
conn = Sequel.connect(CONF)
t = Thread.new { conn['select sleep(100)'].all }
sleep 2
t.kill
sleep 15
Когда я запускаю этот код, я ожидаю, что запрос остановится через 10 секунд, но это не так.При просмотре списка процессов mysql с помощью:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND != 'Sleep'
я вижу - он все еще обрабатывает (41 сек):
| TIME | QUERY |
|------|-------------------|
| 41 | select sleep(100) |
Как изменить мой код для получения ожидаемого результата?