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


前言

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

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

用例執行方式

HttpRunnerManager中,模塊和項目的用例執行時可選擇為同步或者異步方式,在沒搭建RabbitMQ環境時,我們只能通過同步的方式來執行,執行完之后立即返回報告。

用例執行方式

如果選擇異步的方式,就是在后台執行,在異步執行完畢后,我們可以去查看或下載測試報告。但如果沒有搭建RabbitMQ環境,那么異步執行會報錯,並得不到測試報告。

異步執行報錯

啟動RabbitMQ服務

首先,要實現異步執行,我們需要啟動RabbitMQ服務,並確保能夠正常訪問其Web控制台管理界面,如下:

RabbitMQ主界面

修改 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報錯

在網上查了下,發現是因為 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接口測試平台已完成,已成功搭建完成了異步執行、定時任務及任務監控的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM