摘要:當超過次后,將把此進程的狀態置為默認值為。。如果為,則的日志會被寫入日志文件中理解為重定向輸出的日志這個參數可以設置一個非用戶,當我們以用戶啟動之后。我這里面設置的這個用戶,也可以對進行管理子進程的的日志路徑輸出日志文件錯誤日志文件當。
在使用Tp的消息隊列 think-queue的時候進程意外結束了!導致項目沒法運行;
所以用到了supervisor; 接下來跟大家分享一下自己的使用心得以及安裝到使用的方法;
官網:http://supervisord.org/introd...
首先安裝 有很多辦法;
01:wget 下載壓縮包:
cd /usr/local/lee #這個lee是我自己建立的一個目錄 wget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.2.tar.gz tar -zxvf supervisor-3.3.2.tar.gz cd supervisor-3.3.2 python setup.py install
02: yum安裝:
yum install python-setuptools easy_install supervisor
我們安裝的時候使用wget的;
之后生成配置文件:
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisord.conf
打開配置文件修改一點東西;
vim /etc/supervisord.conf
要將底部的
;[include] ;files = relative/directory/*.ini 修改為: [include] files=/etc/supervisor/*.conf (注意去掉分號,第一次安裝的時候就因為沒去掉分號出現了問題!);
之后創建一個文件 文件名隨意 后綴為.conf的,我這里就創建一個test.conf的文件;
我的項目在/www/wwwroot/admin/目錄下:
vim test.conf #寫入一些配置: [program:test] # 設置進程的名稱,使用 supervisorctl 來管理進程時需要使用該進程名 我這里就叫做test了! command=php think queue:work --queue saveLoginLog --daemon --tries 10; #這個就是隊列執行的命令 directory= /www/wwwroot/admin; #命令執行的目錄或者說執行 command 之前,先切換到工作目錄 可以理解為在執行命令前會切換到這個目錄 process_name=%(process_num)02d; #默認為 %(program_name)s,即 [program:x] 中的 x 這個是進程名,如果我們下面的numprocs參數為1的話,就不用管這個參數 了,它默認值%(program_name)s也就是上面的那個program冒號后面的 numprocs=5; #進程數量當不為1時的時候,就是進程池的概念,注意process_name的設置 autostart=true; #是否自動啟動 autorestart=true; #程序意外退出是否自動重啟 startsecs=1; 自動重啟間隔 startretries=20; 當進程啟動失敗后,最大嘗試啟動的次數。。當超過3次后,supervisor將把此進程的狀態置為FAIL 默認值為3 。。 redirect_stderr=true; 如果為true,則stderr的日志會被寫入stdout日志文件中 理解為重定向輸出的日志 user=root; 這個參數可以設置一個非root用戶,當我們以root用戶啟動supervisord之后。我這里面設置的這個用戶,也可以對supervisord進行管理 stdout_logfile= /www/wwwroot/admin/test.out.log; 子進程的stdout的日志路徑 輸出日志文件 stderr_logfile=/www/wwwroot/admin/test.err.log ; 錯誤日志文件 當redirect_stderr=true。這個就不用
上面有注釋說明的看起來有點混亂,我們來寫一個沒有注釋的:
[program:test] command=php think queue:work --queue saveLoginLog --daemon --tries 10 directory= /www/wwwroot/admin process_name=%(process_num)02d numprocs=5 autostart=true autorestart=true startsecs=1 startretries=20 redirect_stderr=true user=root stdout_logfile= /www/wwwroot/admin/test.out.log stderr_logfile=/www/wwwroot/admin/test.err.log
之后執行啟動:
supervisord -c /etc/supervisord.conf supervisorctl reload
我在執行的時候遇到錯誤了,下面會說錯誤的處理的問題以及解決辦法;
現在我們來測試;
首先在測試的時候執行 stop 將進程停止,之后再打開一個終端連接redis,我們執行登錄,執行后登錄后的隊列任務會在redis一直存在;
supervisorctl stop test 或者直接 supervisorctl stop all
可以看到是沒有被執行的!現在我們開supervisorctl 的test進程
接下來說一下問題:
問題1:
Unlinking stale socket /tmp/supervisor.sock
或者:
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
解決辦法:
sudo unlink /tmp/supervisor.sock or sudo unlink /var/run/supervisor.sock
問題2:
gave up: redis entered FATAL state, too many start retries too quickly
解決辦法:
修改redis.conf的daemonize為no
其他問題暫時沒有發現;
我在測試的時候進程kill掉居然都可以執行,所以將服務器重啟了!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/29114.html
摘要:折騰原因之前都是遠程連接服務器,然后在命令行運行,一旦關閉遠程連接,爬蟲就會停止,很不爽,畢竟能讓一個爬蟲在服務器一直跑才是每個小白的夢想,所以開始研究如何使程序在后臺運行,剛開始看了,感覺不好用,又搜了搜,發現了這個進程管理程序。 折騰原因 之前都是遠程連接服務器,然后在命令行運行scrapy crawl spider,一旦關閉遠程連接,爬蟲就會停止,很不爽,畢竟能讓一個爬蟲在服務器...
摘要:根據中華人民共和國信息產業部第十二次部務會議審議通過的非經營性互聯網信息服務備案管理辦法精神,在中華人民共和國境內提供非經營性互聯網信息服務,應當辦理備案。未經備案,不得在中華人民共和國境內從事非經營性互聯網信息服務。 當我們開發了一個簡單的 Flask 程序,想把項目部署上線,我們可以選擇傳統的部署方式或者云部署方式把項目部署上線。在本文中,筆者將使用 阿里云輕量應用服務器 安裝 C...
閱讀 2646·2021-11-22 15:24
閱讀 1379·2021-11-17 09:38
閱讀 2755·2021-10-09 09:57
閱讀 1204·2019-08-30 15:44
閱讀 2446·2019-08-30 14:00
閱讀 3547·2019-08-30 11:26
閱讀 2939·2019-08-29 16:28
閱讀 755·2019-08-29 13:56