如何杀死所有uwsgi实例

时间:2015-08-12 16:37:40

标签: python django uwsgi

我正在尝试将项目上传到服务器。现在服务器中已有一个项目。我有新的项目,我想运行并用新的项目替换旧项目,所以我将新项目拉到服务器。然后我激活虚拟环境并完成所有必要的工作。然后当我尝试运行命令时:

uwsgi --plugins=python --chdir=/var/www/prjt/src/ --socket=127.0.0.1:8889 --module=prjt.wsgi:application &

它告诉我

probably another instance of uWSGI is running on the same address (127.0.0.1:8889).
bind(): Address already in use [core/socket.c line 761]

我搜索了类似的问题,并找到了关于杀死所有uwsgi实例的解决方案,如本回答here

中所述

但找不到怎么做。

我是这个领域的新手。谁能请帮忙。我被困在这里。

希望问题很清楚。提前致谢

4 个答案:

答案 0 :(得分:14)

对我来说,以暴力方式杀死uwsgi实例的方法是:

sudo pkill -f uwsgi -9

答案 1 :(得分:10)

为您的命令添加一个pid文件:

uwsgi --plugins=python --chdir=/var/www/prjt/src/ --socket=127.0.0.1:8889 --module=prjt.wsgi:application --pidfile /tmp/myapp.pid

然后使用

uwsgi --stop /tmp/myapp.pid

以安全的方式停止uwsgi实例。

如果在启动第一个实例时没有指定pid文件,可以使用

粗暴地删除它
kill `pidof uwsgi`

答案 2 :(得分:4)

你可以在lsof -t -i tcp:8000

获取uwsgi流程的pid

然后将其杀死kill -9 pid

答案 3 :(得分:2)

我通过命令停止我的uwsgi实例:

function onchangeprod(row){
   var test ="<tr>"
             +"<td>"
             +"<select name='product' class='product' style='width: 250px' onchange='onchangeprod(this);'>"
              <c:forEach var='pro' items='${product}'>
                   <c:if test="${pro.id!=prevId}">
               +"<option value='${pro.id}' data-price='${pro.price}'>${pro.name}(&#8364; ${pro.price})</option>"
                   </c:if>
              </c:forEach>  
             +"</select>"
             +"</td>"
             +"</tr>";
$("#applyTable").append(test);
}   <tbody id="applyTable"></tbody>

此命令发送signal to uwsgi,导致它停止。

如果你不了解PID,那么:

kill -INT `cat ${APP_ROOT}/run/uwsgi.pid`

The official documentation