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中用Decorator来简化元编程的教程
Apr 13 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
python读写csv文件实例代码
Jul 05 Python
python 字典 setdefault()和get()方法比较详解
Aug 07 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
如何通过Django使用本地css/js文件
Jan 20 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
Pandas —— resample()重采样和asfreq()频度转换方式
Feb 26 Python
Python的logging模块基本用法
Dec 24 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php获取地址栏信息的代码
2008/10/08 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP实现显示照片exif信息的方法
2014/07/11 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
详解Python3的TFTP文件传输
2018/06/26 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
浅析matlab中imadjust函数
2020/02/27 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
pycharm如何使用anaconda中的各种包(操作步骤)
2020/07/31 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
2014教师党员自我评议总结
2014/09/19 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
校园运动会广播稿
2014/10/06 职场文书
中学教师个人总结
2015/02/10 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
Python中递归以及递归遍历目录详解
2021/10/24 Python