首頁 > 軟體

python測試開發django之使用supervisord 後臺啟動celery 服務(worker/beat)

2022-07-19 22:01:53

前言

Supervisor(‘http://supervisord.org/’)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個程序管理工具,不支援Windows系統。
它可以很方便的監聽、啟動、停止、重啟一個或多個程序。
用Supervisor管理的程序,當一個程序意外被殺死,supervisort監聽到程序死後,會自動將它重新拉起,很方便的做到程序自動恢復的功能,不再需要自己寫shell指令碼來控制。

環境準備

centos 安裝 supervisord

yum install -y supervisord

debian 安裝 supervisord

apt-get install -y supervisor

supervisord.conf

安裝完成後在/etc/supervisor 目錄下會有個組態檔 supervisord.conf

# cd /etc/supervisor
/etc/supervisor# ls
conf.d	supervisord.conf

cat 檢視內容

# cat supervisord.conf 
; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

在專案中我們需要用到此設定,可以在專案根目錄匯出一份

echo_supervisord_conf > ./supervisord.conf

檔案內容編寫

supervisord.conf檔案內容編寫, 前面內容不用改,直接接著在後面寫
比如我需要後臺啟動celery的worker和beat服務

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html

; 前面檔案省略,不用刪,接著後面寫

[program:celery-worker]
command=celery -A hrun2_web worker -l info ; 管理命令,supervisor不支援後臺程序
process_name=%(program_name)s
#user=root                                 ;程序啟動使用者
autostart=true                           ;是否隨supervisor啟動
autorestart=true                         ;是否在掛了之後重啟,意外關閉後會重啟,比如kill掉!
startretries=3                           ;啟動嘗試次數
stderr_logfile=./celery_worker.log           ;標準輸出檔案
stdout_logfile=./celery_worker.log        ;標準輸出檔案
loglevel=info                            ;紀錄檔的級別


[program:celery-beat]
command=celery -A hrun2_web beat ; 管理命令,supervisor不支援後臺程序
process_name=%(program_name)s
#user=root                                 ;程序啟動使用者
autostart=true                           ;是否隨supervisor啟動
autorestart=true                         ;是否在掛了之後重啟,意外關閉後會重啟,比如kill掉!
startretries=3                           ;啟動嘗試次數
stderr_logfile=./celery_beat.log          ;標準輸出檔案
stdout_logfile=./celery_beat.log        ;標準輸出檔案
loglevel=info                            ;紀錄檔的級別

啟動服務

啟動服務

supervisord -c /path/supervisord.conf

關閉服務

supervisorctl shutdown

執行過程,啟動沒問題,不顯示任何內容,如果需要關閉用shutdown

root@13107c465557:/code# supervisord -c ./supervisord.conf
root@13107c465557:/code# supervisorctl shutdown
Shut down

檢視啟動的服務

supervisorctl status

執行結果如下

root@13107c465557:/code# supervisorctl status
celery-worker RUNNING pid 234, uptime 0:00:14
celery-beat RUNNING pid 235, uptime 0:00:14

說明啟動了celery和celery-beat兩個服務

檢視紀錄檔

我們在設定裡面指定了./celery_worker.log 檔案儲存執行紀錄檔,所以可以直接檢視這個檔案

tail -f celery_worker.log -n 30

執行就可以看到worker執行的紀錄檔了

參考教學 https://www.jb51.net/article/146238.htm

到此這篇關於python測試開發django之使用supervisord後臺啟動celery服務(worker/beat)的文章就介紹到這了,更多相關supervisord後臺啟動celery服務內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com