好久沒來了,今天有時間來分享一下httpRunnerManager后續學習,異步執行、定時任務、發送測試報告。直接上干貨。
繼httpRunnerManager學習二后,想要異步執行要安裝rabbitMQ 同樣我們下載docker鏡像 :
#docker pull rabbitmq:3.8.0-management
啟動容器:
#docker run -d --name rabbitmq3.8 -p 5672:5672 -p 15672:15672 -v $PWD/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:3.8.0-management
-d 后台運行
--name 指定容器名
-p 指定服務運行的端口(5672:應用訪問端口,15672控制台web端口)
-v 映射目錄或文件
--hostname 主機名
-e指定環境變量:RABBITMQ_DEFAULT_USER 用戶名
RABBITMQ_DEFAULT_PASS 密碼
啟動完畢:可通過http://服務器ip:15672打開,(前提開放訪問端口)賬號密碼啟動容器有設置,可登錄說明rabbitMQ安裝成功。
踩坑(我虛擬機linux安裝,不知為何掛后台啟動掛掉了。可通過docker ps 查看正在運行的docker容器,通過docker ps -a 查看全部容器通過 docker restart 容器id 重啟容器就好了。)
下一步,修改 httpRunnerManager 中setting.py文件中的信息,找到 :
BROKER_URL = 'amqp://admin:123456@127.0.0.1:5672//‘修改地址為自己服務器地址,這樣rabbitMQ就與httpRunnerManager 關聯起來了。
下一步回到上級目錄(manage.py所在的目錄)啟動worker
#nohup python3 manage.py celery -A HttpRunnerManager worker --loglevel=info > worker.out 2>&1 &
(后台運行 worker 日志存放:worker.out 查看日志:tail -f worker.out)
啟動worker后就可異步執行。(如果沒有,kill -9 進程號 關閉httpRunnerManager進程再重新后台運行)
異步執行搞定。
下面繼續,定時任務。
啟動 celery 監聽定時任務
#nohup python3 manage.py celery beat --loglevel=info > celery.out 2>&1 &
(后台運行 celery beat 日志存放:celery.out 查看日志:tail -f celery.out)
添加定時任務
>minute:分鍾 可以是0-59任意整數
>hour:小時,可以是0-23任意整數
>day:日期,可以是0-31任意整數
>month:月份,可以是1-12任意整數
>week:星期 可以0-7任意整數 0,7表示周日
*/1 * * * * (*之間有空格*) 這句話表示每分鍾執行一次
執行效果:
下面繼續發送郵件:
編輯 HttpRunnerManager 文件下的setting.py文件
找到
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
我是QQ郵箱所以改成這樣。
EMAIL_SEND_USERNAME = '*****@qq.com' # 定時任務報告發送郵箱,支持163,qq,sina,企業qq郵箱等,注意需要開通smtp服務
EMAIL_SEND_PASSWORD = '*******' # 郵箱密碼
修改填寫自己的郵箱、和密碼(密碼是授權碼,在郵箱-設置-賬戶中申請)
填寫完成后保存退出。
關閉與HttpRunnerManager相關的進程,重新后台運行。
下面在定時任務中填寫接收人郵箱進行測試:
測試結果:
ok,記錄完畢。