前言

在之前搭建的HttpRunnerManager接口测试平台,我们还有一些功能没有实现,比如异步执行、定时任务、任务监控等,要完成异步执行,需要搭建 RabbitMQ 等环境,今天我们就来实现这些功能。

需要在Linux上提前准备的环境(下面是本人搭建时的环境):

1,HttpRunnerManager(可参考文章:Linux下搭建HttpRunnerManager接口测试平台

2,RabbitMQ 3.7.6 (可参考文章:Linux下安装RabbitMQ

用例执行方式

HttpRunnerManager中,模块和项目的用例执行时可选择为同步或者异步方式,在没搭建RabbitMQ环境时,我们只能通过同步的方式来执行,执行完之后立即返回报告。

如果选择异步的方式,就是在后台执行,在异步执行完毕后,我们可以去查看或下载测试报告。但如果没有搭建RabbitMQ环境,那么异步执行会报错,并得不到测试报告。

启动RabbitMQ服务

首先,要实现异步执行,我们需要启动RabbitMQ服务,并确保能够正常访问其Web控制台管理界面,如下:

修改 settings.py 配置

我们需要简单修改一下 settings.py 配置文件,需要修改的地方如下(大约在settings.py中第155行左右):

可以通过 vim 命令进行修改,修改之后如下(根据自己实际情况修改):

说明:

  • admin:123456RabbitMQ 中的用户名和密码
  • 192.168.89.128rabbitmq-server 所在服务器ip地址
  • 5672 是RabbitMQ启动时的默认端口,注意不是 15672 端口,15672是Web控制台管理界面的访问端口。

启动worker

在 HttpRunnerManager 的根目录( manage.py 所在的路径),通过以下命令启动worker

python3 manage.py celery -A HttpRunnerManager worker --loglevel=info

也可以通过后台执行的方式启动 worker

nohup python3 manage.py celery -A HttpRunnerManager worker --loglevel=info >worker.log 2>&1 &

如果是在后台运行 worker 的日志,将输出到 worker.log 下。

tornado报错

我在启动 worker 时,遇到了如下问题:

在网上查了下,发现是因为 tornado 版本太高了,tornado6之后版本就弃用了 tornado.web.asynchronous 这种写法,查看当前 tornado 的版本,命令如下:

pip3 show tornado

查看后发现 tornado 版本为 6.0.3 ,于是尝试网上说的将 tornado 降级回到 5.1.1 版本,命令如下:

卸载已安装的tornado版本:pip3 uninstall tornado

安装指定的tornado版本:pip3 install tornado==5.1.1

[root@bogon HttpRunnerManager-master]# pip3 uninstall tornado
Uninstalling tornado-6.0.3:
Would remove:
/root/python36/lib/python3.6/site-packages/tornado-6.0.3-py3.6.egg-info
/root/python36/lib/python3.6/site-packages/tornado/*
Proceed (y/n)? y
Successfully uninstalled tornado-6.0.3
[root@bogon HttpRunnerManager-master]# pip3 install tornado==5.1.1
Collecting tornado==5.1.1
Downloading https://files.pythonhosted.org/packages/e6/78/6e7b5af12c12bdf38ca9bfe863fcaf53dc10430a312d0324e76c1e5ca426/tornado-5.1.1.tar.gz (516kB)
100% |████████████████████████████████| 522kB 874kB/s
Installing collected packages: tornado
Running setup.py install for tornado ... done
Successfully installed tornado-5.1.1

接着,再次启动 worker,可以发现没有报错了,启动成功!

启动定时任务监听器

在 HttpRunnerManager 的根目录( manage.py 所在的路径),通过以下命令启动定时任务celery

python3 manage.py celery beat --loglevel=info

也可以通过后台执行的方式启动 celery

nohup python3 manage.py celery beat --loglevel=info >celery.log 2>&1 &

启动成功时,显示如下内容:

[root@bogon HttpRunnerManager-master]# python3 manage.py celery beat --loglevel=info
celery beat v3.1.26.post2 (Cipater) is starting.
__ - ... __ - _
Configuration ->
. broker -> amqp://admin:**@192.168.89.128:5672//
. loader -> celery.loaders.app.AppLoader
. scheduler -> djcelery.schedulers.DatabaseScheduler . logfile -> [stderr]@%INFO
. maxinterval -> now (0s)

启动任务监控后台

要完成任务监控,需要启动 flower,这个我们在最开始搭建环境时已经安装,是在 requirements.txt 中,如果没有安装的话可以通过 pip3 进行安装。

接下来启动 flower 环境,直接执行命令:flower

也可以通过后台执行的方式启动 flower

nohup flower >flower.log 2>&1 &

如果出现报错:bash: flower: command not found,提示找不到相关命令,那么就需要先设置软链接。首先,查找到 flower 的路径,然后将该路径添加到 /usr/bin/ 下即可,最后执行命令:flower,启动flower时默认的端口是 5555

[root@bogon HttpRunnerManager-master]# flower
bash: flower: command not found
[root@bogon HttpRunnerManager-master]# find / -name flower
/root/python36/bin/flower
/root/python36/lib/python3.6/site-packages/flower
[root@bogon HttpRunnerManager-master]# ln -s /root/python36/bin/flower /usr/bin/flower
[root@bogon HttpRunnerManager-master]# flower
[I 191229 17:29:58 command:139] Visit me at http://localhost:5555
[I 191229 17:29:58 command:144] Broker: amqp://guest:**@localhost:5672//
[I 191229 17:29:58 command:147] Registered tasks:
['celery.backend_cleanup',
'celery.chain',
'celery.chord',
'celery.chord_unlock',
'celery.chunks',
'celery.group',
'celery.map',
'celery.starmap']

最后,检查一下 5555 端口是否已开放,在Windows的浏览器下输入地址访问flower管理界面:http://ip地址:5555/

异步执行

到这里,我们在模块和项目执行用例时,选择异步执行方式,便不会报错了。

当异步执行完毕后,可以在报告管理中查看报告。

定时任务

设置定时任务是在测试计划的菜单栏之下。

新增定时任务,相关的 定时任务crontab语法 ,这里不多介绍,大家可以去网上查找学习。

按上面设置定时任务之后,每5分钟用例会执行一次,然后可以去报告管理界面查看相关报告。

任务监控

系统设置下的任务监控,其实就是之前的 flower 监控环境。但界面上对应的链接地址可能不对,我们需要简单修改一下。

需要修改的文件是 templates/base.html ,具体如下(大约在base.html第134行左右,根据自己实际情况修改):

修改好任务监控的链接地址之后,再次刷新页面,对应的链接地址就会更新了,我们点击任务监控菜单,就可以进入到flower任务监控后台界面。

OK,到这里,我们部署的HttpRunnerManager接口测试平台已完成,已成功搭建完成了异步执行、定时任务及任务监控的功能。

Linux下搭建实现HttpRunnerManager的异步执行、定时任务及任务监控的更多相关文章

  1. Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式CentOS7-1810下实现

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

  2. Linux下搭建iSCSI共享存储的方法 Linux-IO Target 方式 Debian9.5下实现

    iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...

  3. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  4. Linux下搭建个人网站

    前不久在阿里买了一个服务器,然后开始第一次尝试搭建自己的个人网站.前端采用了bootstrap框架,后端采用的是PHP,数据库使用的是Mysql.新手第一次在linux下搭建遇见很多问题,在这里分享一 ...

  5. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  6. Linux下搭建 Cocos2d-x-2.1.4 编译环境

    [tonyfield 2013.09.04 ] 参考 Linux下搭建 Cocos2d-x-2.1.4 编译环境 导入 HelloCpp 例程 1. Java 入口 HelloCpp.java Hel ...

  7. Linux下搭建tomcat集群全记录(转)

    本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...

  8. linux 下搭建php环境

    linux 下搭建php环境 1.下载apache (http://httpd.apache.org/download.cgi) 下载php组件 ( http://cn2.php.net/get/ph ...

  9. linux下搭建hexo环境

    最近对搭建个人博客比较感兴趣,但是刚搭建好next主题基本博客,电脑就坏了,借了一台电脑继续搞,不想在他电脑中弄太多环境,所以我准备在自己电脑的服务器上搭建hexo环境 服务器环境: (1)cento ...

随机推荐

  1. 网络请求之jsonp封装

    首先介绍下jsonp原理 浏览器因为同源策略的限制,在不同源的服务器通过我们传统axios是不能直接用来请求数据的(忽略代理),而src标签则不受同源策略的影响,所以我们需要动态的创建带有src的标签 ...

  2. Java练习 SDUT-1959_简单枚举类型——植物与颜色

    简单枚举类型--植物与颜色 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 请定义具有red, orange, yell ...

  3. Oracle使用——varchar2() 和 char()关联查询 存在空格

    背景 表dbcontinfo 字段loanid,类型为varchar2(60) 表dbloanbal 字段loanid,类型为char(60) loanid字段实际长度为24位 问题 两张表dbloa ...

  4. uva 11754 Code Feat (中国剩余定理)

    UVA 11754 一道中国剩余定理加上搜索的题目.分两种情况来考虑,当组合总数比较大的时候,就选择枚举的方式,组合总数的时候比较小时就选择搜索然后用中国剩余定理求出得数. 代码如下: #includ ...

  5. LRJ-Example-06-02-Uva514

    #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<stack> using namespace std; + ...

  6. Laravel 5.6 安装 guzzlehttp

    环境:Laravel 5.6 安装  composer require guzzlehttp/guzzle 在vendor文件夹下,vendor\guzzlehttp\guzzle 引入 use Gu ...

  7. 如何利用aop的环绕消息处理log, 以及各种坑的记录

    如何利用aop的环绕消息处理log, 以及各种坑的记录 本文链接: https://www.cnblogs.com/zizaiwuyou/p/11667423.html 因为项目里有很多地方要打log ...

  8. xUtils框架的介绍(三)

    接上回,继续介绍xUtils的最后两个模块:DbUtils和HttpUtils.首先先介绍第一个SQLite数据库操纵的简单ORM框架,只要能理解xUtils为我们提供的api,相信你也能熟练的把Db ...

  9. HDU 2546 01背包问题

    这里5元是个什么意思呢.差不多就是特殊情况了. 就是说最贵的那个东西先不买.并且最后要留下5元去买那个最贵的. 也就是说对现在金钱-5 拿剩下的钱去对减去最贵的商品后的商品dp.看这些剩下的钱能买多少 ...

  10. POJ 2752 Seek the Name, Seek the Fame next数组理解加深

    题意:给你一个字符串,寻找前缀和后缀相同的子串(包括原串). 从小到大排列输出其子串的长度 思路:KMP  next 数组应用. 其实就是一个数学推导过程. 首先由next数组 可知s(ab) = s ...