亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

與服務器上運行的 python 腳本保持通信

與服務器上運行的 python 腳本保持通信

冉冉說 2023-05-23 15:28:13
這是我到目前為止開發的。首先,我的 websocket 服務器:// app.jsconst spawn = require('child_process');const WebSocket = require('ws')const wss = new WebSocket.Server({ port: 8080 })wss.on('connection',ws => {  ws.on('message', message => {    const python = spawn('python', ['-u', 'main.py', message])    python.stdout.on('data', function (data) {      // Pipe data from python script ...      dataToSend = data.toString('utf8');      ws.send(dataToSend)     });     python.on('error', err => {       console.log(err)     })  })  ws.on('close', () => {    console.log('Client has disconected')  })}).on('error', err => {  console.log(err)})它的基礎知識用于child_process生成一個傳遞message從客戶端發送的 python 腳本。 -u傳遞是為了刷新 python 腳本打印,因此它可以流出python.stdout并發送到客戶端。這是從 app.js websocket 服務器調用的我的 python 腳本:# main.pyimport time, sysi = int(sys.argv[1])while i > 0:    print(i)    i-=1    time.sleep(1)    # this while is just anexemple of some pre-script process    # (for exemple, signin on user account)# after signin...print('input something from client: ')x = input()while True:    print(x)    time.sleep(1)    # use input x variable    # here is where my code happens and the program keeps executing    pass如您所見,我正在使用從服務器message傳遞過來的信息spawn()來保持我的第一個while存活。這只是一個例子,我需要用戶提供這種輸入。保持你的注意力,x = input()因為這是我的主要問題最后,我的客戶端 websocket// client.jsconst WebSocket = require('ws');let socket = new WebSocket("ws://localhost:8080");socket.onopen = function(e) {    let someClientInfo = 2    console.log("sending data...");    socket.send(someClientInfo);};當然,當客戶端收到最后一行時,它會一直卡住,因為他無法從他這邊輸入任何內容。他剛剛收到來自 python 的輸出流。有人知道是否可以將第二個輸入傳遞給我正在運行的 python 腳本嗎?我開始認為這也許是不可能的,但我不能考慮另一種方法來做到這一點。如果是child_process做不到的事情,我應該尋找什么方法?我的主要目的是與服務器上運行的 python 腳本保持有效通信,以便我可以將此輸入從客戶端傳遞給 python。我希望能夠斷開與該套接字的連接,然后再次連接并繼續接收 python 腳本輸出。到目前為止,我也找不到辦法做到這一點。我的主腳本不能在服務器代碼中(也許如果你對 flask 的基本實現或類似的東西感到困惑),因為我希望能夠啟動多個腳本并且每個客戶端用戶都應該能夠與他自己的 python 腳本在服務器上運行。每個用戶都會有自己的main.py到目前為止,我還沒有考慮如何讓所有這些進程在服務器上運行,或者即使這樣做是安全的。對此的任何建議都將非常感激,我也將非常感激。
查看完整描述

1 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

您可能想查看https://www.npmjs.com/package/python-shell 您可以在節點上生成一個 python 實例。



查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號