需要为 运行 创建一个队列,一次处理一个人

Need to create a queue to run process for one person at a time

我什至不知道从哪里开始研究这个主题(例如要使用的关键字),所以我希望有人能帮助我指明正确的方向。

我有一个 .NET MVC 应用程序。在此应用程序中,用户上传一个包含数据层的 zip 文件,该数据层用作应用程序调用的 python 脚本的输入。由于数据库游标的性质(如果有人熟悉的话,它是一个 ArcGIS Enterprise 地理数据库),一次只有一个人可以 运行 python 脚本,因为游标对数据库进行独占锁定(有没有办法解决这个问题)。在极少数情况下,两个人同时尝试使用此 Web 应用程序,我需要将这些人排在队列中,以便 python 脚本为第一个人完成,然后在下一个人的数据集上开始.我从哪里开始着手,或者你可以给我什么词来开始制定关于这个主题的一些搜索查询?

也许会有更多技术特定的解决方案出现,但从我的第一角度来看,您可以使用优先级队列样式处理。

它可以像创建一个 table 一样简单,并在那里入队(插入)新请求并在它到来时进行处理(出队)。或者,使用更高级别的框架,如 RabbitMQ

所以,每当新的 zip 文件出现时,

  • 上传到存储库
  • 在队列中插入新记录
  • 从队列中获取第一项
  • 进程

如果第二个人上传新文件,你会检查队列table,会有标志最后一个项目正在处理,然后你可以让客户知道,脚本已排队并将被处理。

显然生成客户端的唯一id是值得的,如果同时有多个上传,那么你就不会混合优先级和脚本。