如何确保innodb线程安全

2024-05-16 21:49:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个InnoDB表,它列出了一堆需要处理的文件。你知道吗

处理处理的python脚本基本上是这样做的:

  1. 获取下一个状态为“未处理”的文件
  2. 将状态设置为“正在处理”
  3. 调用一些C++脚本处理文件
  4. 标记为“已处理”
  5. 结束

这个python脚本将被多次调用,因此我有点担心在第1步和第2步可能会出现一些问题,在第2步中,在进程A有时间更新状态之前,进程B将从db获得与进程A相同的行。你知道吗

我猜Python GIL在这里帮不了我,因为解释器在执行SQL时会释放GIL(对吧?)。从我读到的内容来看,在InnoDB上执行表锁是行不通的。行级锁定能解决这个问题吗?如果没有,我还有什么选择?你知道吗

我可以简单地做“从线程导入锁”并添加

with lock:
    update_file_status(file_id, "processing")

什么?你知道吗


Tags: 文件标记脚本内容dbsql进程状态