Ruby中重复发生的事件
我已经用Sinatra/Ruby编写了一个基本的RESTful API,用于处理博彩市场。由于固定赔率的性质,我需要在特定的时间间隔内重新计算当前市场赔率,比如说五分钟。通常情况下,你可以把这样的事情作为一个cron作业,或者运行clockwork等,每五分钟启动一次活动,但是我的问题是,我可能会同时运行数百或数千个这样的市场,如果可以避免的话,我不希望它们都同步到同一个时钟 我的第一个想法是将一个项目放入延迟的作业队列,以便在特定的时间间隔内重新生成赔率,但是我可以保证作业将按时运行(或者在队列服务器停机的情况下) 最优雅的处理方法是在数据库中有一个时间戳,如果赔率超过某个时间,在新的赌注出现时自动重新计算赔率。这样做的缺点是,如果下注速度慢,我会不断地拒绝最新的下注,因为我在下注之前会使赔率无效。不太好Ruby中重复发生的事件,ruby,Ruby,我已经用Sinatra/Ruby编写了一个基本的RESTful API,用于处理博彩市场。由于固定赔率的性质,我需要在特定的时间间隔内重新计算当前市场赔率,比如说五分钟。通常情况下,你可以把这样的事情作为一个cron作业,或者运行clockwork等,每五分钟启动一次活动,但是我的问题是,我可能会同时运行数百或数千个这样的市场,如果可以避免的话,我不希望它们都同步到同一个时钟 我的第一个想法是将一个项目放入延迟的作业队列,以便在特定的时间间隔内重新生成赔率,但是我可以保证作业将按时运行(或者在队
有什么想法吗?我不确定我是否完全理解你问题的背景,但也许这个策略会有用: 把你所有的
N
市场分割成m
块,比如用ID除以m
的模
如果您的重新计算周期为
T
,请每隔T/m
运行一次重新计算,一次只重新计算一个区块。需要考虑的另一件事是:您是否希望在计算赔率时暂停下注?很好,计算速度会非常快,但在发生时市场将进入暂停状态。当然,对于失败的下注,他们将在客户机上进行错误处理。