我正在使用Django
构建社交分析网站。
以下是我的use cases
之一:
"Users" of the site analyze social media "profiles" (from Snapchat, Instagram, Twitter, etc...).
Each social media "profile" is only analyzed once (and not more).
我有一个SQL
查询,可以检索队列中的profiles
。例如,返回的第一个5
profiles
(当我重复此查询5
次时)是:
xmax123, darcy67, shop_hallmary10, christmas_shop987, lilybend_09
在user
分析profile
xmax123
后,xmax123
将不再显示其他users
进行分析。
我的问题是当多个users
同时调用此SQL查询时,会为所有profile
返回相同的社交媒体xmax123
(users
)。换句话说,当两个users
(user 1
和user 2
)同时调用此SQL查询时,相同的社交媒体profile
(xmax123
)是为他们两个回来了。这意味着xmas123
将被2
个users
分析两次,这是一个问题。
我希望确保user 1
得到xmax123
而user 2
得到darcy67
,即使两个users
同时调用此SQL查询也是如此。有哪些策略可以解决这个问题?
答案 0 :(得分:2)
您可以使用互斥锁来限制访问。
没有看到代码库,我不确定在哪里放置它。您可以使用它来锁定访问权限,以便一次只能查询一个用户。然后在查询一个人后释放互斥锁,以便下一个用户现在可以访问该数据库。
答案 1 :(得分:1)
或许您可以查询用户,然后在完成后将其标记为“已完成”,因此如果有人在该用户中工作,则该用户仍可供其他用户使用,因此您可能需要“工作”布尔字段以便当有人在其中工作时你可以锁定它..