zoukankan      html  css  js  c++  java
  • python常驻任务接收外界参数

    实现一个简单的常驻任务是容易的,写一个while True就可以了,但是同时要能接收外界传来的参数,就稍微有点复杂.

    我第一个想到的是网络编程中的server/client模式

    server作为常驻进程,可以接受client传来的各种参数进行处理

    服务端:server.py

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('127.0.0.1', 10001)) s.listen(5) def do_some(): pass def do_other(): pass def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr) sock.send(b'Welcome!') while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8') == 'exit': break data_str = data.decode('utf-8') data_list = data_str.split(',') if len(data_list) == 3: do_some() else: do_other() sock.send(('processing, %s!' % s3).encode('utf-8')) sock.close() if __name__ == '__main__': while True: # 接受一个新连接: data, addr = s.accept() # 创建新线程来处理TCP连接: t = threading.Thread(target=tcplink, args=(data, addr)) t.start()

    服务端实现完了,下面我们来实现客户端client.py,客户端支持传入参数或从文件读取参数,来向客户端发送请求

    import socket
    import sys
    
    if __name__ == '__main__':
        param = sys.argv[1]
        c_list = []
        if param.endswith('txt'):
            with open(param, 'r') as file:
                for line in file.readlines():
                    c_list.append(line.strip().encode('utf8'))
        else:
            c = param.encode('utf8')
            c_list.append(c)
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(('127.0.0.1', 10001))
        print(s.recv(1024).decode('utf-8'))
        for data in c_list:
            s.send(data)
            print(s.recv(1024).decode('utf-8'))
        s.send(b'exit')
        s.close()

    这样通过两个脚本,一个实现了常驻进程,一个实现了传入参数,就可以不断接受外界请求

  • 相关阅读:
    PAT A1094 The Largest Generation (25 分)——树的bfs遍历
    PAT A1055 The World's Richest (25 分)——排序
    PAT A1052 Linked List Sorting (25 分)——链表,排序
    PAT A1076 Forwards on Weibo (30 分)——图的bfs
    辅导员
    辅导员面试
    C程序设计
    Excel VBA 基本概念
    Excel函数
    导入excel表的数据到数据库ssh
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/13334547.html
Copyright © 2011-2022 走看看