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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
python根据时间生成mongodb的ObjectId的方法
Mar 13 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python中Scrapy爬虫图片处理详解
Nov 29 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
python实现批量命名照片
Jun 18 Python
Python中else的三种使用场景
Jun 16 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 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/04/18 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
python里反向传播算法详解
2020/11/22 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
如何将整数int转换成字串String
2014/03/21 面试题
硕士生工作推荐信
2014/03/07 职场文书
抵押贷款承诺书
2014/05/30 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏