gpt4 book ai didi

python - 资源调度应用

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:29 24 4
gpt4 key购买 nike

我正在尝试实现一个应用程序来协调多个正在安排独占资源的用户。调度数据必须在具有单个主节点的网络上保持强一致性。预定的资源可以是任何东西,从 session 室到工作现场的工作人员。

我们假设 session 室不能同时安排两个 session ,并且一名工作人员不能同时在两个工作地点。应用程序的业务逻辑不得允许用户“超额预订”资源。

我想不通的是如何表示数据,以便如果两个或多个用户同时对时间表进行操作,并且存在冲突,其中一个更新将中止。

到目前为止,我看到的唯一解决方案是跟踪每个排他性资源的时间段。因此,如果 session 室以 5 分钟为间隔使用,并且被安排在上午 9 点到 9 点 30 分,那么上午 9 点到 9 点 30 分对应的 5 分钟时间段将全部返回 TRUE,而未安排的时间段将返回 FALSE 或 NULL .然后,数据库事务会将 session 室对象从存储中拉出,检查所有时隙,如果更新与现有时隙冲突,则中止。

但是,这似乎会变得非常大、非常快。也许它可以被垃圾收集?此外,设计的目标之一是支持可变粒度,因此一些对象将按分钟进行调度,而其他对象可能按天进行调度,而这种数据设计并不能很好地支持这一点。

目前,我正在尝试使用 Python 在 Google App Engine 上实现此功能,但我真的很想看到针对此问题的一些更通用的解决方案。我通过谷歌搜索得出的所有结果都是安排重复性任务,或者执行一次性操作以自动构建优化计划的算法。

最佳答案

您将只想跟踪每个排他性资源的开始和结束时间。您问题中的数据存储实际上是最简单的部分 - 困难的(呃)部分是设计查询以查找时间间隔内的冲突。

如果我的逻辑在 21 小时后是正确的,下面的伪代码应该检查 session 冲突。

# Set up your proposed meeting
proposed.start = <thursday, 1pm>
proposed.end = <thursday, 2pm>

# Look for meetings that intersect with or straddle proposed meeting
conflicts = <SELECT * FROM meeting WHERE
meeting.start BETWEEN proposed.start AND proposed.end OR
meeting.end BETWEEN proposed.start AND proposed.end OR
meeting.start <= proposed.start AND meeting.end >= proposed.end>


if conflicts.length > 0:
# We have a conflict!

关于python - 资源调度应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1535391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com