Я пытаюсь запустить сценарий (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)