背景:
我正在研究数据视图,许多报告都是由运行时间很长的查询生成的。我在 python 中编写了一个小型查询缓存守护程序,它接受查询,产生一个线程来运行它,并在完成后将结果存储为腌制字符串。结果通常是按月或其他因素分解的各种聚合,因此结果集并不大。所以我的缓存守护进程可以检查它是否已经有结果,并立即返回,否则它会发回“待处理”消息(或“错误”或“失败”或各种其他消息)。关键是,作为 django Web 服务器的客户端将在 5~10 秒内返回“待处理”并再次查询,同时向用户发送一条消息,说“您的报告正在构建中,请耐心等待'。
问题:
我想为用户添加取消长时间运行的查询的功能,假设它还没有被缓存。我知道我可以使用 杀死 MySQL 中的查询线程KILL
,但是有没有办法以类似于获取最后插入行的 id 的方式获取查询的线程/查询/进程 id?我正在通过 python MySQLdb 模块执行此操作,但我看不到任何会返回此值的游标对象的属性/方法。