Когда приходит к Веб -разработка Ничто не сравнится 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”