Python如何操作docker redis过程解析


Posted in Python onAugust 10, 2020

使用操作命令借助subprocess模块进行操作

#encoding:utf-8
import subprocess
def cmd(command):
  subp = subprocess.Popen(command,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding="utf-8")
  subp.wait(2)
  if subp.poll() == 0:
    return subp.communicate()
  else:
    return None
获取redis键所对应的值

def get_output(command):
  subp = subprocess.getoutput(command)
  return subp

flask框架获取docker里面redis中的键值对

@ui_case_set.route("/get_code", methods=["GET"])
@allow_cross_domain
def get_code():
  set_id = request.values.get("id")
  if not set_id:
    return response_fail(msg="缺少参数用例集id")
  key_name = "key" + str(set_id)
  value_name = get_output("docker exec {0} redis-cli get {1}".format(DockerConfig.container_redis_name, key_name))
  if value_name:
    return response_fail(msg="此测试集正被{}编辑!".format("金刚"))
  else:
    return response_success(msg="可以进行编辑!")

flask框架增加及删除docker里面redis中的键值对

@ui_case_set.route("/time_limit", methods=["POST"])
@allow_cross_domain
def set_time():
  # lock:为1:上锁, 为0时: 解锁
  set_id = request.json.get("id")
  locak = request.json.get("lock")
  # if not all([set_id, locak]):
  #   return response_fail(msg="参数不足")
  key_name = "key" + str(set_id)
  if locak == 1:
    value_name = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
    cmd("docker exec {0} redis-cli setex {1} 300 '{2}'".format(DockerConfig.container_redis_name, key_name, value_name))
    return response_success(content={"lock_status": 1}, msg="测试集{}上锁成功".format(set_id))
  else:
    cmd("docker exec {0} redis-cli del {1}".format(DockerConfig.container_redis_name, key_name))
    return response_success(content={"lock_status": 0}, msg="测试集{}解锁成功".format(set_id))

注意点: 使用操作命令时不要带 “-it",如(docker exec -it ui_redis(docker容器名称) redis-cli set key vale) 否则接口在前台运行方式下是可以正常访问的,在python程序后台运行下运行失败。因为 指定 -it 是需要开启一个交互模式的终端。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的一些陷阱与技巧小结
Jul 10 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
python使用pandas实现数据分割实例代码
Jan 25 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
Django中的静态文件管理过程解析
Aug 01 Python
Python类中方法getitem和getattr详解
Aug 30 Python
python web框架中实现原生分页
Sep 08 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
基于Python实现下载网易音乐代码实例
Aug 10 #Python
Python grequests模块使用场景及代码实例
Aug 10 #Python
基于Python pyecharts实现多种图例代码解析
Aug 10 #Python
Python Celery异步任务队列使用方法解析
Aug 10 #Python
使用Python将语音转换为文本的方法
Aug 10 #Python
Python获取excel内容及相关操作代码实例
Aug 10 #Python
Python利用命名空间解析XML文档
Aug 10 #Python
You might like
模仿OSO的论坛(三)
2006/10/09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
微信跳一跳自动运行python脚本
2018/01/08 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python递归函数实例讲解
2019/02/27 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
如何卸载python插件
2020/07/08 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
为什么使用接口?
2014/08/13 面试题
基督教婚礼主持词
2014/03/14 职场文书
和解协议书
2014/04/16 职场文书
个人考核材料
2014/05/15 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
南京南京观后感
2015/06/02 职场文书
时尚女魔头观后感
2015/06/04 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
八年级语文教学反思
2016/03/03 职场文书
2019个人工作总结
2019/06/21 职场文书