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里将list中元素依次向前移动一位
Sep 12 Python
Python os模块学习笔记
Jun 21 Python
初步剖析C语言编程中的结构体
Jan 16 Python
python 执行shell命令并将结果保存的实例
May 11 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
Python图片的横坐标汉字实例
Dec 04 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
PHP小教程之实现链表
2014/06/09 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
php mysql 封装类实例代码
2016/09/18 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
对python中的iter()函数与next()函数详解
2018/10/18 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
python实现吃苹果小游戏
2020/03/21 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
开放系统互连参考模型
2016/06/29 面试题
初婚初育证明范本
2015/06/18 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
《所见》教学反思
2016/02/23 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js