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绘制人人网好友关系图示例
Apr 01 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
Python 多线程的实例详解
Sep 07 Python
python opencv实现运动检测
Jul 10 Python
Sanic框架Cookies操作示例
Jul 17 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
Python pytesseract验证码识别库用法解析
Jun 29 Python
python如何导入依赖包
Jul 13 Python
pandas处理csv文件的方法步骤
Oct 16 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 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实现模仿socket请求返回页面的方法
2014/11/04 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
vue-autoui自匹配webapi的UI控件的实现
2020/03/20 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
详解python的webrtc库实现语音端点检测
2017/05/31 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
python基础教程之while循环
2019/08/14 Python
Django框架models使用group by详解
2020/03/11 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
学习Python需要哪些工具
2020/09/04 Python
Python通过len函数返回对象长度
2020/10/22 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
机电工程学生自荐信范文
2013/12/07 职场文书
企业员工集体活动方案
2014/08/17 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
学校运动会简讯
2015/07/20 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
Django debug为True时,css加载失败的解决方案
2021/04/24 Python