如何在后端和前端之间建立连接?

时间:2017-07-13 07:50:41

标签: javascript python ajax

我有一个应用程序,其前端是用JavaScript编写的(骨干)和用Python编写的后端。

我目前遇到问题,在初始化请求后2分钟后,前端和后端之间的连接终止。后端的任务在4-5分钟后完成。前端必须等到它收到来自后端服务器的通知。

这是我的场景, 我向后端发送ajax请求。这是一个非常昂贵的请求,消耗RAM和CPU。此请求需要大约3分钟才能完成。完成后,请求只返回一个JSON数据,其中包含"任务已完成"或者"任务失败"需要向用户显示。

Ajax请求是非常简单的请求,

$.ajax({
    url: server_base_url+"/json_rpc",
    method: "POST",
    headers:headers,
    data: JSON.stringify({
        id: (new Date()).getTime(),
        method: "execute",
        params: params,
    }),
    dataType: "json",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    success: function(data) {
        if (data.error) {
            console.log("RPC ERROR",model,method,data.error.message);
        } else {
            console.log("RPC OK",model,method,data.result);
        }
        if (cb) {
            cb(data.error,data.result);
        }
    },
    error: function() {
        console.log("RPC ERROR",model,method);
    }
});

在服务器端,我使用nginx来处理反向代理。我已经将超时时间增加到10分钟(仅用于测试)。

我面临的问题是,当一次性提出昂贵的请求时,即使在5分钟后用户也不会收到通知,因为连接已经在2-3分钟后终止(通过浏览器?)。然后,受挫的用户将刷新页面并再次点击同一按钮发送新请求,而其他请求可能仍在处理或完成。

有没有解决方案摆脱这个问题?任何建议都非常感谢。

0 个答案:

没有答案