Python中文
首页
教程
问答
标签
搜索
登录
注册
调整数据库中的临时记录以统计总数以停止超额订阅
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我在看一个系统,在这个系统中,人们可以回复到一个免费的网络会议,这些网络会议可以变得非常繁忙,有很多有趣的地方,所以必须有一些方法来确保它不会被过度订阅。。。所以,我们需要倒计时,从他们预订座位到他们的订单完成并确认。这样一来,第一批点击“参加”就能获得会议席位的人数。如果用户没有完成他们的预订,他们分配的座位会被放回游泳池让其他人去抢。。。在</p> <p>概述所发生的事情(我如何看待这一点)</p> <p>1)用户在事件上单击“RSVP”,这将向/RSVP/{event_id}/</p> <p>这将存储一个惟一的id(在这个问题的其余部分中称为token)和一个时间戳。它也在会话中存储该令牌。在</p> <p>然后通知用户他们有X时间(比如5分钟)来完成其余的详细信息(name/email/d.o.b等)</p> <p>但是:在将任何内容放入数据库之前,它会检查待处理订单的数量是否少于可用的总座位数,如果没有(会议没有剩余的座位),则返回“对不起,没有座位了,请继续检查,因为预订还没有完成,还有更多的座位可用”</p> <p>2)如果用户及时填写,它会将他们的详细信息存储在数据库中作为“参加”。。。。在</p> <p>但是,如果他们没有及时填写表格,每秒钟都有一个cron作业在运行,并且检查并删除任何时间戳超过5分钟的令牌,这样他们就失去了参加会议的机会,会议上的这个“席位”就会被放回池中。(他们将收到通知,他们没有成功,并返回到第一步)</p> <p>所有这些都很容易编写,只需将记录放入数据库,做一个<code>COUNT(*) FROM pending_bookings WHERE conference_id = {x}</code>并计算出有多少座位已确认或订单待定,然后从可供会议使用的总座位中减去。在</p> <p>但我不认为使用MySQL在这方面会有很大的扩展性——这些人(我肯定还会有)超过20万人试图抢占大约200个座位,对其中每一个人做一个计数(*)将会非常昂贵,我们不能做任何像样的缓存,因为它需要实时检查进程中有多少人。在</p> <p>我曾经研究过使用<a href="http://aws.amazon.com/simpledb/" rel="nofollow">Amazon SimpleDB</a>来实现这一点,仅仅是为了它的部署和部署的可伸缩性,但是我以前使用过它,并且发现COUNT()不一定是准确的(我猜它的可伸缩性的本质),因为很明显,COUNT需要100%准确,我需要能够添加记录以及时间戳,并能够从中删除超过5分钟的记录。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在我看来,所有20万人都可以得到一个“代币”开始,但只有200人可以完成代币。在</p> <p>所以我想到了两件事; 1) 为什么不记录活动本身的“剩余座位数”,这样你就不用做计数了,也不会出现超额预订的情况,因为更新活动所需的锁会阻止活动低于零。在</p> <p>2)在人员订阅期间,如果剩余座位降至零,则所有剩余令牌将失效,用户将被“踢出”注册流程(对此表示友好并致歉,但所有座位现在已满等)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
5 回答
无法使用Django\u mssql\u后端迁移到外部hos
8 回答
无法使用Django&Python3.4连接到MySql
2 回答
无法使用Django+nginx上载媒体文件
9 回答
无法使用Django1.6导入名称模式
9 回答
无法使用Django1.7和mongodb登录管理站点
7 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
4 回答
无法使用Djangockedi验证CBV中的字段
2 回答
无法使用Djangocketditor上载图像(错误400)
9 回答
无法使用Djangocron进行函数调用
6 回答
无法使用Djangofiler djang上载文件
6 回答
无法使用Djangokronos
2 回答
无法使用Djangomssql provid
8 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
6 回答
无法使用Djangomssq迁移Django数据库
4 回答
无法使用Djangonox创建用户
7 回答
无法使用Djangopyodb从Django查询SQL Server
3 回答
无法使用Djangopython3ldap连接到ldap
10 回答
无法使用Djangoredis连接到redis
4 回答
无法使用Django中的FK创建新表
6 回答