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程序设计入门(2)变量类型简介
Jun 16 Python
使用python编写android截屏脚本双击运行即可
Jul 21 Python
详解Python中最难理解的点-装饰器
Apr 03 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
Python之pymysql的使用小结
Jul 01 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python元组和字典的内建函数实例详解
Oct 22 Python
Python对象的属性访问过程详解
Mar 05 Python
python 追踪except信息方式
Apr 25 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 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面向对象概念
2011/11/06 PHP
yii操作cookie实例简介
2014/07/09 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
javascript类型转换示例
2014/04/29 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
微信小程序 自定义Toast实例代码
2017/06/12 Javascript
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python如何重载模块实例解析
2018/01/25 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
PyTorch基本数据类型(一)
2019/05/22 Python
浅析Windows 嵌入python解释器的过程
2019/07/26 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
党委干部批评与自我批评发言稿
2014/09/28 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
学术会议通知范文
2015/04/15 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android