Python + Javascript = 🔥🔥🔥

Python + Javascript = 🔥🔥🔥

[Translate] Kết hợp Javascript với Python

Khi nói đến Lập trình Website không có điều gì đánh bại được Javascript. Nhưng đôi lúc chúng ta phải làm một vài các công việc khó khăn hơn, ví dụ phân tích luồng dữ liệu. Trong trường hợp này, Python là một lựa chọn cực kỳ tuyệt vời. Nhưng đó chỉ là một chức năng trong trang web. Chúng ta có nên chuyển sang Python bởi vì tính năng này không? Thông thường là không.

Vậy làm thế nào để chúng ta có thể xậy dựng Backend bằng NodeJS và chỉ sử dụng Python khi chúng ta cần

Điều đó thật tuyệt vời phải không? Chúng ta có thể sử dụng child process trong NodeJS để chạy một Python script khi chúng ta cần.

const spawn = require('child_process').spawn
app.get("process_data", (req, res) => {
    spawn('python3', ['script.py'])
})
# script.py
doSometing()

Và nếu chúng ta muốn đưa dữ liệu vào file python script

const spawn = require('child_process').spawn
app.get("process_data", (req, res) => {
    const msg = "Hello"
    spawn('python3', ['script.py', msg])
})

Trong Python chúng ta có thể đọc dữ liệu mà chúng ta truyền vào bằng sys module.

import sys, json

def main():
    msg = sys.argv[1]
    doSometing(msg)

if __name__ == '__main__':
    main()

Chúng ta có thể truyền dữ liệu vào trong spaw trong tiến trình Python, truyền dữ liệu trong stream.

const spawn = require('child_process').spawn,
const py = spawn('python3', ['script.py'])
const data = {
    msg: "Hello"
}

py.stdin.write(JSON.stringify(data)) //we have to send data as a string, so we are using JSON.stringify
py.stdin.end()
import sys, json

def main():
    lines = sys.stdin.readlines()
    data = json.loads(lines)
    doSometing(data['msg'])

if __name__ == '__main__':
    main()

Cuối cùng chúng ta có thể trả lại dữ liệu cho nodejs trong python script

const spawn = require('child_process').spawn
const py = spawn('python3', ['cscript.py'])

py.stdout.on('data', function(res){
   let data = JSON.parse(res.toString())
   console.log(data)
})
import sys

# You will have your own implementation of get data. In this case lets assume it returns a dict/json
res = getData()
print(json.dumps(data))

sys.stdout.flush()

Bài này như vậy là kết thúc.

Nguồn: dev.to/0shuvo0/python-javascript--1nd6