1. 程式人生 > >Linux下搭建實現HttpRunnerManager的非同步執行、定時任務及任務監控

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

前言

在之前搭建的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介面測試平臺已完成,已成功搭建完成了非同步執行、定時任務及任務監控的功能