我可以从Node调用WSGI应用程序吗?

时间:2020-06-23 04:41:55

标签: node.js wsgi

我运行了一个Python Flask服务器,该服务器具有一些已注册的路由(请参见下面的示例)。一种路由将HTTP请求重定向到WSGI应用程序。对于我的项目,我切换到NodeJS服务器并重新创建路由,因为Python的GIL太慢了。

我还在将WSGI路由转换为NodeJS的过程中,但发现并没有太多支持。

WSGI协议描述了一些环境变量,例如wsgi.url_scheme,但是在Google上,我找不到与NodeJS(TS)有关的任何示例或参考。

wsgi.url_scheme filetype:py 5000次点击

wsgi.url_scheme filetype:ts 0命中

wsgi.url_scheme filetype:js 0命中

节点/ TS

app.get("/wsgi", async function (req, res) {
    var env = createWsgiEnvironmentFrom(req); <--- what I would need

    var p = child_process.spawn('wsgi-test.exe', ["foo"],
        {
            stdio: [process.stdin, process.stdout, process.stderr],
            env: {...env }
        });
    }
);

Python:

@app.route('/wsgi', methods=['POST', 'GET'])
def wsgi(path):
    env = request.environ  # already WSGI compatible
    p = subprocess.Popen(args=["wsgi-test.exe", "foo"],
        env=env,
        ...)

这有原因吗?我以为Node可以更好地扩展传入连接,所以我很惊讶地看到与Node结合使用的实例很少/没有实例

我们非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

简单的原因是因为WSGI

是Web服务器将请求转发到以Python编程语言编写的Web应用程序或框架的简单调用约定。

曾经说过,看来您只需要按照WSGI doc中所述使用标准和WSGI环境变量来填充Object。除了 wsgi.input wsgi.errors (我不知道Python如何在环境变量中传递流,我也不知道文件状对象),这应该很容易。如果您发现某些环境变量存在问题,请随时询问。

希望这会有所帮助。