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

Can I call a WSGI application from Node?

我 运行 一个 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 次点击

Node/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 在扩展传入连接方面更好,所以我很惊讶我看到如此 little/no 示例与 Node

结合

非常感谢任何帮助!

原因很简单,因为WSGI

is a simple calling convention for web servers to forward requests to web applications or frameworks written in the Python programming language.

曾经说过,您似乎只需要按照 WSGI doc 中所述,使用标准和 WSGI 环境变量填充 Object。除了 wsgi.inputwsgi.errors (我不知道 Python 如何将流传入一个环境变量,我不知道 类文件对象 是什么)应该很容易。如果您发现某些环境变量有问题,请随时再次询问。

希望对您有所帮助。