繁体   English   中英

如何并行运行带有参数的python脚本实例?

[英]How to run an instance of a python script with arguments in parallel?

我正在尝试让Script(flowcheck.py)作为实例运行,以便如果客户端快速连续发送多个请求,则脚本不会挂起并等待上一个请求完成。

有没有一种方法可以让服务器仅运行脚本+参数的实例而不监视它,然后返回侦听下一个请求?

服务器代码

#!/usr/bin/env python

import SocketServer
import flowcheck
import os 

class MyTCPHandler(SocketServer.BaseRequestHandler):


    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data

        flowcheck.flow(self.data)


if __name__ == "__main__":
    HOST, PORT = "", 5007

    # Create the server, binding to localhost on port 5007
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)

    # Activate the server; this will keep running until you
    # interrupt the program with Ctrl-C
    server.serve_forever()

客户代码

#!/usr/bin/env python

import socket
import sys

HOST, PORT = "192.168.8.201", 5007
data = " ".join(sys.argv[1:])

# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # Connect to server and send data
    sock.connect((HOST, PORT))
    sock.sendall(data + "\n")


finally:
    sock.close()

print "Sent:     {}".format(data)

脚本

#!/usr/bin/env python
import sys
import time
#data = " ".join(sys.argv[1:])
def flow(data):
    var=0
    while var<3:

        print "FlowCheck",data,var
        var = var +1
        time.sleep(5)

不用导入脚本,而是使用Popen import subprocess Popen以在后台运行脚本实例并继续接收请求。

#!/usr/bin/env python

import SocketServer
import os 
import subprocess

class MyTCPHandler(SocketServer.BaseRequestHandler):

    def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data

        var1 =self.data
        subprocess.Popen([ "python", "flowcheck.py",var1])

更改为脚本以使用import sys接受系统参数

#!/usr/bin/env python
import sys
import time

print "start"
data = sys.argv[1]

def flow(data):
    var=0
    while var<3:

        print "FlowCheck",data,var
        var = var +1
        time.sleep(5)

flow(data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM