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基础中所出现的异常报错总结
Nov 19 Python
python执行使用shell命令方法分享
Nov 08 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
Feb 22 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
Python模块汇总(常用第三方库)
Oct 07 Python
python 画函数曲线示例
Dec 04 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
JavaScript 事件参考手册
2008/12/24 Javascript
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
js给onclick赋值传参数的两种方法
2013/11/25 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
express express-session的使用小结
2018/12/12 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
Python reversed函数及使用方法解析
2020/03/17 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
计算机专业优秀大学生自我总结
2014/01/21 职场文书
学术会议邀请函范文
2014/01/22 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
运动会广播稿300字
2015/08/19 职场文书