Python实现常驻进程接收外部参数的Server-Client方案

Aria
Aria
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍如何在Python中实现一个常驻进程以接收外部传入的参数。通过构建基于Socket的Server-Client架构,服务端利用多线程处理并发连接,解析客户端发送的数据并执行相应逻辑;客户端支持从命令行直接传入参数或读取文件内容发送请求。该方案实现了持久化运行与动态参数交互的结合,适用于需要持续监听并处理外部指令的场景。

Python常驻进程接收外部参数的方案概述

编写一个简单的Python常驻进程并不困难,只需使用一个无限循环即可。然而,若要求该进程能够实时接收并处理来自外部的参数,实现复杂度便会相应增加。

针对这一需求,首先考虑采用网络编程中经典的Server-Client(服务器-客户端)架构模式。

在此模式下,Server端作为常驻进程运行,负责监听并接收由Client端发送的各类参数,进而执行相应的处理逻辑。

服务端Server.py代码实现与解析

以下是服务端的核心代码实现,文件名为server.py。


import sockets = 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实现与参数传递机制

服务端逻辑完成后,接下来实现客户端代码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()

通过这两个脚本的配合,一个负责保持常驻状态,另一个负责传递参数,系统即可持续接收并处理来自外界的请求。

以上即为本文的全部内容,希望对读者的学习有所帮助,也欢迎大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表