ฉันสามารถเรียกแอปพลิเคชัน WSGI จาก Node ได้หรือไม่

ฉันใช้งานเซิร์ฟเวอร์ Python Flask ซึ่งมีเส้นทางที่ลงทะเบียนไว้สองสามเส้นทาง (ดูตัวอย่างด้านล่าง) เส้นทางหนึ่งเปลี่ยนเส้นทางคำขอ HTTP ไปยังแอปพลิเคชัน WSGI สำหรับโปรเจ็กต์ของฉัน ฉันเปลี่ยนไปใช้เซิร์ฟเวอร์ NodeJS และสร้างเส้นทางใหม่เนื่องจาก Python ช้าเกินไปเนื่องจาก GIL

ฉันกำลังดำเนินการแปลงเส้นทาง WSGI เป็น NodeJS ด้วย แต่พบว่าไม่มีการรองรับมากนัก

โปรโตคอล WSGI อธิบายตัวแปรสภาพแวดล้อมบางอย่าง เช่น wsgi.url_scheme แต่ใน Google ฉันไม่พบตัวอย่างหรือข้อมูลอ้างอิงใดๆ เกี่ยวกับตัวแปรดังกล่าวด้วย NodeJS (TS)

wsgi.url_scheme filetype:py 5,000 ครั้ง

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

หลาม:

@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