【问题标题】:Microservice download queue微服务下载队列
【发布时间】:2017-01-01 15:56:56
【问题描述】:

我正在制作一个网站,我在其中提供了一个按钮,该按钮可以:

  • POST 一个JSON 到一条路线(现在没什么难的)
  • 但该过程还应该以多个system commands 开头,并在其末尾提供用户可以下载的 zip 文件

为此,我想我需要一个queue。因为同时连接的两个用户无法启动该进程。 排队可以吗?但我不知道如何保留会话并发送回 zip 文件...

PS:我正在使用angular2Python WS

【问题讨论】:

  • 为什么同时连接的两个用户无法启动进程?那是糟糕的设计。许多系统命令也是糟糕的设计。详细说明您想要实现的目标。

标签: queue message-queue


【解决方案1】:

您的问题分为三个部分:

首先,每个用户一次只允许执行一次系统命令。

这可以像为每个用户维护一个同步标志位一样简单,如果可以处理请求,则存储 1,否则存储 0。每当一个 post 请求到来时,首先检查是否设置了这个标志。如果不是 1 则继续返回一些非 200 状态码。否则,将其设置为 0 并触发命令。

其次,处理多个触发系统命令的POST请求。

仅当您的系统命令需要更多时间并且通常在后台运行时,您才应该使用队列。

三、如何保留会话

保留会话不是一个好主意。你有两个选择。一,客户端不断地汇集到另一个端点以检查 zip 创建是否完成。其次,(比第一个更好)使用 websockets 在 zip 创建完成后将通知发送回客户端。

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 2017-03-20
    • 2020-10-08
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2020-03-01
    相关资源
    最近更新 更多