Могу ли я вызвать приложение WSGI из 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 тип файла:ts 0 обращений

wsgi.url_scheme тип файла:js 0 обращений

Узел/ТС

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 }
        });
    }
);

Питон:

@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.

Любая помощь высоко ценится!


person Daniel Stephens    schedule 23.06.2020    source источник


Ответы (1)


Причина проста: WSGI

— это простое соглашение о вызовах веб-серверов для пересылки запросов веб-приложениям или платформам, написанным на языке программирования Python.

Однажды было сказано, что вам просто нужно заполнить Object стандартными переменными среды и переменными среды WSGI, как описано в документ WSGI. Помимо wsgi.input и wsgi.errors (я не знаю, как Python может передавать поток в переменной среды, я не знаю, что такое файлоподобный объект есть) это должно быть довольно просто. Если вы обнаружите проблемы с какой-либо переменной среды, не стесняйтесь спрашивать снова.

Надеюсь это поможет.

person Daniele Ricci    schedule 26.06.2020
comment
На самом деле вы просто подтверждаете то, что я думал, он перенаправляет некоторые переменные среды. Я приму это как свой ответ. Мне просто интересно, почему я почти не видел кода WSGI в Node. - person Daniel Stephens; 26.06.2020