Python常驻任务实现接收外界参数代码解析


Posted in Python onJuly 21, 2020

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

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

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

服务端: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,客户端支持传入参数或从文件读取参数,来向客户端发送请求

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 相关文章推荐
Python实现全局变量的两个解决方法
Jul 03 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
python3库numpy数组属性的查看方法
Apr 17 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
python框架中flask知识点总结
Aug 17 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
Python中捕获键盘的方式详解
Mar 28 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Python通过文本和图片生成词云图
May 21 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 Python
python中np是做什么的
Jul 21 #Python
从python读取sql的实例方法
Jul 21 #Python
python3.7调试的实例方法
Jul 21 #Python
python如何快速生成时间戳
Jul 21 #Python
OpenCV Python实现图像指定区域裁剪
Mar 12 #Python
openCV提取图像中的矩形区域
Jul 21 #Python
Python文件夹批处理操作代码实例
Jul 21 #Python
You might like
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
很实用的一个完整email发送程序
2006/10/09 PHP
PHP Pear 安装及使用
2009/03/19 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
Vue精简版风格概述
2018/01/30 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
python删除文件示例分享
2014/01/28 Python
pycharm 使用心得(三)Hello world!
2014/06/05 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
如何一键升级Python所有包
2020/11/05 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
介绍一下grep命令的使用
2012/06/28 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
写给女生的道歉信
2014/01/14 职场文书
土地转让协议书范本
2014/04/15 职场文书
教师考核评语
2014/04/28 职场文书
服装设计师求职信
2014/06/04 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
处级干部考察材料
2014/12/24 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
食堂卫生管理制度
2015/08/04 职场文书