<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                原文出處:[https://segmentfault.com/a/1190000015768529](https://segmentfault.com/a/1190000015768529) 在使用Tp的消息隊列 think-queue的時候進程意外結束了!導致項目沒法運行; 所以用到了supervisor; 接下來跟大家分享一下自己的使用心得以及安裝到使用的方法; 官網:[http://supervisord.org/introd...](http://supervisord.org/introduction.html) 首先安裝 有很多辦法; 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的; ![5b5888b468e0e.png](https://segmentfault.com/img/bVbekgo?w=1415&h=714 "5b5888b468e0e.png") ![5b5888cf26f49.png](https://segmentfault.com/img/bVbekgv?w=718&h=254 "5b5888cf26f49.png") ![5b5888e4a6449.png](https://segmentfault.com/img/bVbekgy?w=1071&h=186 "5b5888e4a6449.png") 之后生成配置文件: ~~~ 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 ~~~ ![5b588a07dce5a.png](https://segmentfault.com/img/bVbekgQ?w=889&h=195 "5b588a07dce5a.png") 我在執行的時候遇到錯誤了,下面會說錯誤的處理的問題以及解決辦法; 現在我們來測試; 首先在測試的時候執行 stop 將進程停止,之后再打開一個終端連接redis,我們執行登錄,執行后登錄后的隊列任務會在redis一直存在; ~~~ supervisorctl?stop?test?或者直接 supervisorctl?stop?all ~~~ ![5b588ab662a08.png](https://segmentfault.com/img/bVbekg5?w=685&h=159 "5b588ab662a08.png") 可以看到是沒有被執行的!現在我們開supervisorctl 的test進程 ![5b5887de1f28b.png](https://segmentfault.com/img/bVbekg8?w=863&h=261 "5b5887de1f28b.png") ![5b588ac471aa8.png](https://segmentfault.com/img/bVbekha?w=1487&h=150 "5b588ac471aa8.png") 接下來說一下問題: 問題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. ![5b588add37fa1.png](https://segmentfault.com/img/bVbekhb?w=1453&h=126 "5b588add37fa1.png") ![5b588ae748e75.png](https://segmentfault.com/img/bVbekhd?w=907&h=145 "5b588ae748e75.png") 解決辦法: ~~~ 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掉居然都可以執行,所以將服務器重啟了!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看