我正在通过一段遗留代码(Python2.6 和 Django1.3.3)来获取锁。后端是甲骨文。
参考引用的代码块。第 8 行需要 len(query set) 是什么?由于第 7 行的注释,我特别困惑。这一行在遍历查询集中的大量记录时非常耗时。我想知道在删除它之前有这条线的原因。
我将测试此代码并在此处更新。我将尝试不使用此行,并尝试将 len 替换为 .count() 方法。
lock_acquired = False
while not lock_acquired:
try:
where_clause= "is_deleted=0"
avail_emp = Employee.objects.select_for_update(nowait=True).extra(where=[where_clause])
log.debug("Acquiring lock")
# *****Please dont remove below log to handle multiple requests at a time while rows are locked by a request*****
log.debug(len(avail_emp))
lock_acquired = True
log.debug("Lock acquired")
except Exception, e:
log.debug("%s - Waiting for 2 secs before retry " %str(e))
sleep(2)