Linux下搭建實現HttpRunnerManager的異步執行、定時任務及任務監控

前言

在以前搭建的HttpRunnerManager接口測試平臺,咱們還有一些功能沒有實現,好比異步執行、定時任務、任務監控等,要完成異步執行,須要搭建 RabbitMQ 等環境,今天咱們就來實現這些功能。html

須要在Linux上提早準備的環境(下面是本人搭建時的環境):
1,HttpRunnerManager(可參考文章:Linux下搭建HttpRunnerManager接口測試平臺
2,RabbitMQ 3.7.6 (可參考文章:Linux下安裝RabbitMQpython

用例執行方式

HttpRunnerManager中,模塊和項目的用例執行時可選擇爲同步或者異步方式,在沒搭建RabbitMQ環境時,咱們只能經過同步的方式來執行,執行完以後當即返回報告。web

用例執行方式

若是選擇異步的方式,就是在後臺執行,在異步執行完畢後,咱們能夠去查看或下載測試報告。但若是沒有搭建RabbitMQ環境,那麼異步執行會報錯,並得不到測試報告。vim

異步執行報錯

啓動RabbitMQ服務

首先,要實現異步執行,咱們須要啓動RabbitMQ服務,並確保可以正常訪問其Web控制檯管理界面,以下:瀏覽器

RabbitMQ主界面

修改 settings.py 配置

咱們須要簡單修改一下 settings.py 配置文件,須要修改的地方以下(大約在settings.py中第155行左右):bash

修改前

能夠經過 vim 命令進行修改,修改以後以下(根據本身實際狀況修改):服務器

修改後

說明:app

  • 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=infoasync

也能夠經過後臺執行的方式啓動 worker

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

若是是在後臺運行 worker 的日誌,將輸出到 worker.log 下。

tornado報錯

我在啓動 worker 時,遇到了以下問題:

tornado報錯

在網上查了下,發現是由於 tornado 版本過高了,tornado6以後版本就棄用了 tornado.web.asynchronous 這種寫法,查看當前 tornado 的版本,命令以下:

pip3 show tornado

查看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

也能夠經過後臺執行的方式啓動 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/

flower管理界面

異步執行

到這裏,咱們在模塊和項目執行用例時,選擇異步執行方式,便不會報錯了。

異步執行

當異步執行完畢後,能夠在報告管理中查看報告。

異步執行的測試報告

定時任務

設置定時任務是在測試計劃的菜單欄之下。

定時任務界面

新增定時任務,相關的 定時任務crontab語法 ,這裏很少介紹,你們能夠去網上查找學習。

新增任務

定時任務列表

按上面設置定時任務以後,每5分鐘用例會執行一次,而後能夠去報告管理界面查看相關報告。

查看報告

任務監控

系統設置下的任務監控,其實就是以前的 flower 監控環境。但界面上對應的連接地址可能不對,咱們須要簡單修改一下。

任務監控的地址

須要修改的文件是 templates/base.html ,具體以下(大約在base.html第134行左右,根據本身實際狀況修改):

修改base.html

修改好任務監控的連接地址以後,再次刷新頁面,對應的連接地址就會更新了,咱們點擊任務監控菜單,就能夠進入到flower任務監控後臺界面。

flower任務監控管理界面

OK,到這裏,咱們部署的HttpRunnerManager接口測試平臺已完成,已成功搭建完成了異步執行、定時任務及任務監控的功能。

相關文章
相關標籤/搜索