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里隐藏的“禅”
Jun 16 Python
python进阶教程之文本文件的读取和写入
Aug 29 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
Python基于smtplib模块发送邮件代码实例
May 29 Python
如何让python的运行速度得到提升
Jul 08 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 Python
selenium.webdriver中add_argument方法常用参数表
Apr 08 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
php短址转换实现方法
2015/02/25 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
深入理解javascript中的this
2021/02/08 Javascript
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python缩进和冒号详解
2016/06/01 Python
Python调用C++程序的方法详解
2017/01/24 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python中cPickle类使用方法详解
2018/08/27 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python笔记之facade模式
2019/11/20 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
大学在校生求职信范文
2013/11/21 职场文书
学校后勤人员职责
2013/12/27 职场文书
2014年财政所工作总结
2014/11/22 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis