需要创建一个队列来一次为一个人运行进程

时间:2017-11-13 16:40:52

标签: c# asp.net asp.net-mvc arcgis

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

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

1 个答案:

答案 0 :(得分:1)

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

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

因此,每当新的zip文件出现时,

  • 在资源库中上传
  • 在队列中插入新记录
  • 从队列中获取第一项
  • 过程

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

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