前言

在之前搭建的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. 前端学习☞jquery

    一 什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 j ...

  2. @codeforces - 1056G@ Take Metro

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 环上有 n 个点,按顺时针顺序以 1 到 n 编号.其中 1~m ...

  3. @总结 - 2@ 位运算卷积/子集卷积 —— FWT/FMT

    目录 @0 - 参考资料@ @1 - 异或卷积概念及性质@ @2 - 快速沃尔什正变换(异或)@ @3 - 快速沃尔什逆变换(异或)@ @4 - 与卷积.或卷积@ @5 - 参考代码实现@ @6 - ...

  4. 13 -1 BOM和定时器

    一 BOM JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象模型,操作网页上的元 ...

  5. hdu 3068 最长回文 (Manacher算法求最长回文串)

    参考博客:Manacher算法--O(n)回文子串算法 - xuanflyer - 博客频道 - CSDN.NET 从队友那里听来的一个算法,O(N)求得每个中心延伸的回文长度.这个算法好像比较偏门, ...

  6. behavior planning——inputs to transition functions

    the answer is that we have to pass all  of the data into transition function except for the previous ...

  7. oracle避免在索引列上使用NOT

    通常, 我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的 影响. 当ORACLE”遇到”NOT,他就会停止使用索引转而执行全表扫描. 举例: 低效: (这里,不使用索引) S ...

  8. supersocket新的配置属性 "textEncoding"

    在 SuperSocket 1.6 之前的版本, 当你通过Session对象发送文本时, 将文本信息转换成能够通过Socket传输的二进制数据的默认编码是UTF8. 你可以通过设置 Session 的 ...

  9. 【JQ】toggle / slideToggle / fadeToggle 的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. log4js的简单配置

    js记录日志工具log4js,参数请参考官网文档https://log4js-node.github.io/log4js-node/index.html const log4js = require( ...