与服务器上运行的python脚本保持通讯

莱昂纳多·里克

这是我到目前为止开发的。首先,我的websocket服务器:

// app.js
const 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是生成一个Python脚本,该脚本传递message从客户端发送来的。-u传递以刷新python脚本打印,因此可以将其流式传输python.stdout并发送给客户端。

这是从app.js websocket服务器调用的我的python脚本:

# main.py
import time, sys
i = 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()因为这是我的主要问题

最后,我的客户网络套接字

// client.js
const WebSocket = require('ws');
let socket = new WebSocket("ws://localhost:8080");

socket.onopen = function(e) {
    let someClientInfo = 2
    console.log("sending data...");
    socket.send(someClientInfo);

};

socket.onmessage = function(event) {
    console.log('Output of python script: ' + event.data.toString('utf-8'));
};

socket.onerror = function(event) {
    console.log(event);
};

它基本传递了第一个参数someClientInfo,然后接收如下的python脚本输出:

sending data...

Output of python script: 2 

Output of python script: 1

Output of python script: input something from client:

当然,当客户收到这最后一行内容时,它总是会卡住,因为他无法从自己的侧面输入任何内容。他只是从python接收输出流。

有人知道是否有可能将第二个输入传递给我正在运行的python脚本?我开始认为也许这是不可能的,但是我不能以另一种方式做到这一点。如果child_process做不到,那我应该寻找什么方法?

我的主要目的是保持与服务器上运行的python脚本的实时通信,因此我可以将此输入从客户端传递给python。

我希望能够从此套接字断开连接,然后再次连接并继续接收python脚本输出。到目前为止,我也找不到办法。

我的主脚本不能放在服务器代码中(例如,如果您对flask的基本实现有所了解,或者类似的东西),因为我希望能够启动多个脚本,并且每个客户端用户都应该能够与之交互他自己的python脚本在服务器上运行。每个用户都有自己的main.py

到目前为止,我还没有对如何保持所有这些进程在服务器上的运行感到满意,即使这样做是安全的。关于此的任何建议将非常感激,我也将非常感谢。

Yajat Vishwakk

您可能想查看https://www.npmjs.com/package/python-shell可以在node上生成python实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

关闭SSH后,如何在远程服务器上保持python脚本运行?

来自分类Dev

在远程服务器上运行本地python脚本

来自分类Dev

在服务器上运行Python抓取脚本

来自分类Dev

如何在服务器上运行python脚本?

来自分类Dev

如何在Web服务器上运行python脚本?

来自分类Dev

在服务器上运行R脚本?

来自分类Dev

Cherrypy服务器运行python脚本

来自分类Dev

Cherrypy服务器运行python脚本

来自分类Dev

如何让python服务器保持活动状态以在线程上运行计划任务?

来自分类Dev

如何在Unix服务器上运行mysqltuner脚本?

来自分类Dev

使用脚本在SSH服务器上远程运行命令

来自分类Dev

从Windows在Linux服务器上运行远程脚本

来自分类Dev

使用脚本在ssh服务器上远程运行命令

来自分类Dev

在远程服务器上运行Perl脚本

来自分类Dev

在Ubuntu服务器上在后台运行R脚本

来自分类Dev

在远程服务器上运行bash脚本

来自分类Dev

在 arduino 上运行 php 脚本(作为 Web 服务器)

来自分类Dev

安排python脚本在网络服务器上运行

来自分类Dev

在Apache服务器上运行具有Sudo特权的Python CGI脚本

来自分类Dev

如何运行位于AWS EC2服务器上的python脚本?

来自分类Dev

Crontab python脚本无法运行(在Linux服务器上使用anaconda)

来自分类Dev

如何在我的网络服务器上运行python脚本?

来自分类Dev

持续在后台通过ssh会话在服务器上运行python脚本

来自分类Dev

在Apache服务器上运行具有Sudo特权的Python CGI脚本

来自分类Dev

安排python脚本在网络服务器上运行

来自分类Dev

在本地服务器上运行python脚本仅显示源代码

来自分类Dev

无法从本地python脚本在远程服务器上运行psql命令

来自分类Dev

如何在我注销后不退出的远程服务器上运行 python 脚本?

来自分类Dev

在 CentOS 服务器上运行时,Python 脚本在 smptlib.SMTP(server) 处冻结

Related 相关文章

  1. 1

    关闭SSH后,如何在远程服务器上保持python脚本运行?

  2. 2

    在远程服务器上运行本地python脚本

  3. 3

    在服务器上运行Python抓取脚本

  4. 4

    如何在服务器上运行python脚本?

  5. 5

    如何在Web服务器上运行python脚本?

  6. 6

    在服务器上运行R脚本?

  7. 7

    Cherrypy服务器运行python脚本

  8. 8

    Cherrypy服务器运行python脚本

  9. 9

    如何让python服务器保持活动状态以在线程上运行计划任务?

  10. 10

    如何在Unix服务器上运行mysqltuner脚本?

  11. 11

    使用脚本在SSH服务器上远程运行命令

  12. 12

    从Windows在Linux服务器上运行远程脚本

  13. 13

    使用脚本在ssh服务器上远程运行命令

  14. 14

    在远程服务器上运行Perl脚本

  15. 15

    在Ubuntu服务器上在后台运行R脚本

  16. 16

    在远程服务器上运行bash脚本

  17. 17

    在 arduino 上运行 php 脚本(作为 Web 服务器)

  18. 18

    安排python脚本在网络服务器上运行

  19. 19

    在Apache服务器上运行具有Sudo特权的Python CGI脚本

  20. 20

    如何运行位于AWS EC2服务器上的python脚本?

  21. 21

    Crontab python脚本无法运行(在Linux服务器上使用anaconda)

  22. 22

    如何在我的网络服务器上运行python脚本?

  23. 23

    持续在后台通过ssh会话在服务器上运行python脚本

  24. 24

    在Apache服务器上运行具有Sudo特权的Python CGI脚本

  25. 25

    安排python脚本在网络服务器上运行

  26. 26

    在本地服务器上运行python脚本仅显示源代码

  27. 27

    无法从本地python脚本在远程服务器上运行psql命令

  28. 28

    如何在我注销后不退出的远程服务器上运行 python 脚本?

  29. 29

    在 CentOS 服务器上运行时,Python 脚本在 smptlib.SMTP(server) 处冻结

热门标签

归档