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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
Python对象体系深入分析
Oct 28 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
Python中的TCP socket写法示例
May 11 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
Python threading的使用方法解析
Aug 28 Python
python requests包的request()函数中的参数-params和data的区别介绍
May 05 Python
python 还原梯度下降算法实现一维线性回归
Oct 22 Python
flask框架中的cookie和session使用
Jan 31 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
python opencv旋转图片的使用方法
Jun 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中文件下载功能实现超详细流程分析
2012/06/13 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php 使用array函数实现分页
2015/02/13 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
php实现的双色球算法示例
2017/06/20 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python解惑之True和False详解
2017/04/24 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
python  logging日志打印过程解析
2019/10/22 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
普通党员自我剖析材料
2014/10/07 职场文书
原告代理词范文
2015/05/25 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
感恩老师主题班会
2015/08/12 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript