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 06 Python
pandas object格式转float64格式的方法
Apr 10 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
python列表,字典,元组简单用法示例
Jul 11 Python
python 视频逐帧保存为图片的完整实例
Dec 10 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python文件及目录操作代码汇总
Jul 08 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
python自动从arxiv下载paper的示例代码
Dec 05 Python
如何编写python的daemon程序
Jan 07 Python
Python实现石头剪刀布游戏
Jan 20 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正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
Python中一些深不见底的“坑”
2019/06/12 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
降低python版本的操作方法
2020/09/11 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
中学教师暑期培训方案
2014/08/27 职场文书
2014年英语工作总结
2014/12/20 职场文书
汽车转让协议书
2015/01/29 职场文书
颐和园英文导游词
2015/01/30 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
公司员工培训管理制度
2015/08/04 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL