为什么我有错误"地址已在使用"?

时间:2015-06-18 06:08:06

标签: python sockets nginx flask uwsgi

我运行我的烧瓶应用程序,它运行良好,但到应用程序停止时和我的uwsgi日志

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

当我运行touch touch_reload时,app再次正常运行。 我在服务器上运行其他任何可能接受套接字的东西。

我的conf:

nginx
server {
    listen 80;
    ....
    location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:9001;
    }
    ....
}
server {
    listen 80;
    ....
    location / {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:9003;
    }
    ....
}

uwsgi:
chdir = /var/www/../
module = wsgihandler
socket = 127.0.0.1:9003
wsgi-file = app/__init__.py
callable = app
master = true
chmod-socket = 664
uid = root
gid = root
processes = 4
socket-timeout = 180
post-buffering = 8192
max-requests = 1000
buffer-size = 32768
logto = /var/www/.../log/uwsgi.log
touch-reload = /var/www/.../touch_reload

6 个答案:

答案 0 :(得分:12)

此错误表示端口9002已被其他进程使用。根据您的日志,该过程是uwsgi probably another instance of uWSGI is running on the same address (127.0.0.1:9002)。可能是当您停止使用应用程序时未释放端口,并且在运行touch touch_reload时重新启动了wsgi服务器。您可以尝试以下命令来释放端口。

sudo fuser -k 9002/tcp

如果这是一个tcp进程并再次重新启动wsgi服务器以查看该端口是否已被使用。

答案 1 :(得分:2)

也许你通过crtl + z停止uwsgi:

  1. 找到需要8000
  2. 的流程的pid
      

    $ lsof -i:8000

    结果可能是:

    COMMAND  PID       USER   FD   TYPE ...
    uwsgi   9196       xxx    4u  xxx   ...
    

    然后

      

    $ kill 9196

答案 2 :(得分:1)

我有同样的问题,但问题出在sqlalchemy,尝试添加:

@app.teardown_request
def shutdown_session(exception=None):
    from extension import db
    db.session.remove()

答案 3 :(得分:0)

我遇到了同样的问题,事实证明我的主要模块已经在加载app.run()的情况下启动了应用程序。

因此请确保app.run()部分中有if __name__ == '__main__'

答案 4 :(得分:0)

FWIW,我有一个类似的问题,发现当我应该运行uwsgi --http时,我正在运行uwsgi --socket

答案 5 :(得分:0)

有趣的是,即使使用套接字,您也会遇到相同的Address already in use错误。

               vvvvvvvvvvv-- Socket!
error removing unix socket, unlink(): Permission denied [core/socket.c line 198]
bind(): Address already in use [core/socket.c line 230]
        ^^^^^^^^^^^^^^^-- "Address"

如果您确实使用套接字,请参见this answer