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 相关文章推荐
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python中时间模块的基本使用教程
May 14 Python
python快速排序的实现及运行时间比较
Nov 22 Python
python实现while循环打印星星的四种形状
Nov 23 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
django执行原始查询sql,并返回Dict字典例子
Apr 01 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
python中如何写类
Jun 29 Python
python 爬取免费简历模板网站的示例
Sep 27 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/09/22 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
JavaScript中Function详解
2015/02/27 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
深入理解Javascript中的this关键字
2015/03/27 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
python小白学习包管理器pip安装
2020/06/09 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
电气自动化大学生求职信
2013/10/16 职场文书
40岁生日感言
2014/02/15 职场文书
组织委员竞选稿
2015/11/21 职场文书