Django在worker之间共享锁



我正在尝试在视图函数内循环,我不希望另一个worker运行相同的循环。

我正在使用Lock(),但我无法实现这一点。

from multiprocessing import Lock
import time
lock = Lock()
def loop_func(request):
lock.acquire()
# loop start
for i in range(0,100):
print ("did work ", i)
time.sleep(1)
finally:
lock.release()

是否有人可以帮助我,如果有一种方法,我可以让所有的工人共享锁,使锁将等待,直到其他工人完成并进入循环

我可以通过使用reddislock来克服这个问题。

from redis import Redis
conn = Redis()
import redis_lock
lock = redis_lock.Lock(conn, "request_lock_adding_data")
def loop_func(request):
lock.acquire()
# loop start
for i in range(0,100):
print ("did work ", i)
time.sleep(1)
finally:
lock.release()

用10个并行请求测试它,它100%工作

最新更新