Class A(object):
def __init__(self, cookie):
self.__cookie = cookie
def refresh_cookie():
```This method refresh the cookie after every 10 min```
self.__cookie = <newcookie>
@property
def cookie(self):
return self.__cookie
问题是每10分钟后cookie值会发生变化。但是,如果某些方法已经使用了较旧的cookie,则请求失败。当多个线程使用相同的A对象时会发生这种情况。 我正在寻找一些解决方案,每当我们尝试刷新,即修改cookie值时,没有人应该能够读取cookie值而不应该锁定cookie值。
答案 0 :(得分:0)
这是条件变量的作业。
from threading import Lock, Condition
class A(object):
def __init__(self, cookie):
self.__cookie = cookie
self.refreshing = Condition()
def refresh_cookie():
```This method refresh the cookie after every 10 min```
with self.refreshing:
self.__cookie = <newcookie>
self.refreshing.notifyAll()
@property
def cookie(self):
with self.refreshing:
return self.__cookie
一次只有一个线程可以进入由with
管理的self.refreshing
块。尝试的第一个线程将成功;其他人将阻止,直到第一个离开with
阻止。