Рубрики
Без рубрики

Python + javascript = 🔥🔥🔥

Когда приходит к веб -разработке, ничто не сравнится с JavaScript. Но иногда нам нужно сделать немного больше … Tagged с JavaScript, Node, Python, Programming.

Когда приходит к Веб -разработка Ничто не сравнится JavaScript Анкет Но иногда нам приходится выполнять немного более требовательную задачу, например, Анализ большой кучи данных Анкет В этом случае Python может быть превосходным вариантом. Но это всего лишь одна функция нашего сайта. Хотим ли мы переключиться на Python только из -за одной функции? Возможно нет.

Так что, если бы мы могли создать наш бэкэнд в основном, используя Nodejs и использовать Python только тогда, когда нам нужно.

Это было бы здорово, верно? Мы можем использовать Дочерний процесс в узле. JS для запуска сценария Python, когда это необходимо.

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

И если мы хотим, мы можем Передайте данные в наш сценарий Python также.

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

В Python, чтобы иметь возможность читать данные, которые вы должен импортировать Sys модуль.

import sys, json

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

if __name__ == '__main__':
    main()

Теперь вместо этого при передаче данных при порождении процесса Python давайте отправляем данные в потоке.

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()

Наконец мы можем отправить ответ на наши Nodejs из сценария Python

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()

Так что эта статья подошла к концу. Но убедитесь, что вы посетите мои другие статьи.

Я буду уведомлен, если вы нажмете на это 😈

Shuvo ・ 19 октября ・ 2 мин прочитал

Shuvofollow

Оригинал: “https://dev.to/0shuvo0/python-javascript–1nd6”