2015-12-24 4 views
3

Недавно я обновил свое приложение и попытался запустить его и получил следующую ошибку: «Адрес уже используется». Что это значит и как я могу это исправить?Пытаясь запустить приложение Flask, «Адрес уже используется»

Traceback (most recent call last): 
    File "/home/ubuntu/workspace/app.py", line 11, in <module> 
    app.run(host = os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT',8080))) 
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 772, in run 
    run_simple(host, port, self, **options) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 687, in run_simple 
    inner() 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 653, in inner 
    fd=fd).serve_forever() 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 557, in make_server 
    passthrough_errors, ssl_context, fd=fd) 
    File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 467, in __init__ 
    HTTPServer.__init__(self, (host, int(port)), handler) 
    File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__ 
    self.server_bind() 
    File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind 
    SocketServer.TCPServer.server_bind(self) 
    File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind 
    self.socket.bind(self.server_address) 
    File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 98] Address already in use 
+2

Это означает, что есть еще одна услуга, используя этот порт ('8080' в данном случае). Может быть, потому, что вы забыли закрыть еще одно запущенное приложение Flask, и он использует порт '8080'. –

+0

@KevinGuan, но я только развернул одно флеш-приложение:/ – user119264

+0

Адрес, который уже используется, означает, что сервер не может быть запущен, потому что другой сервер работает на этом порту. Проверьте, запущена ли ваша программа, если это так, завершите ее. Также вы можете посмотреть активные серверы tcp, используя tcpview в системах Windows. –

ответ

4

Это означает, что есть еще одна услуга, используя этот порт (8080 в данном случае). Возможно, потому что вы забыли закрыть еще одно запущенное приложение Flask, и он использует порт 8080.

Однако, вы можете изменить порт, который вы используете, например, изменить его 4444 так:

if __name__=="__main__": 
    app.run(host=os.getenv('IP', '0.0.0.0'), 
      port=int(os.getenv('PORT', 4444))) 

Но в любом случае, я думаю, что вы хотели бы знать, какая программа использует эту часть, если это не ваша программа. Вы можете использовать программу nmap или netcat GNU, чтобы проверить ее.

Вот netcat путь (from here):

$ sudo netstat -nlp | grep 8080 
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 125004/nginx 

Когда вы получили его, я предложил бы остановить его вручную (например, если это nginx или другие серверы HTTP, то остановить его с помощью service команды или systemctl если вы используете Systemd Linux)

вы также можете убить его с помощью команды kill:

kill <pid> 

Вы также можете убить его через killall или pkill, то используйте имя процесса вместо это PID:

killall/pkill <process name> 
+0

Вау, спасибо, что помогли! Мне жаль беспокоить вас снова, но он говорит «TemplateNotFound», но index.html находится прямо в моем каталоге, как вы можете видеть на рис. /: – user119264

Смежные вопросы