3

问题

socket.error: [Errno 98] Address already in use

我在做什么

我正在foreman start本地环境中测试一个简单的烧瓶应用程序。该应用程序包含一些功能,但在这里出错:

if __name__ == '__main__':
    app.run()

完整的跟踪如下所示。我不确定可能出了什么问题,或者我的本地机器上如何使用套接字。当我python runapp.py从终端运行应用程序时,一切正常。

我厌倦了什么。

Heroku、flask 和 python 套接字?

将 Flask 应用程序部署到 Heroku

在最后一个问题之后,我厌倦了通过使用更改它运行的端口

if __name__ == '__main__':    
    import os 
    port = int(os.environ.get('PORT', 5000)) 
    app.run(host='0.0.0.0', port=port)

但它没有帮助。任何建议,将不胜感激!我是 Heroku 的新手,所以如果我可以提供更多信息来简化解决这个问题,请告诉我。谢谢!

错误堆栈跟踪:

        22:13:45 web.1  | started with pid 11121
        22:13:45 web.1  |  * Running on http://127.0.0.1:5000/
        22:13:45 web.1  | Traceback (most recent call last):
        22:13:45 web.1  |   File "Hunch/Hunch/hunchapp.py", line 49, in <module>
        22:13:45 web.1  |     app.run()
        22:13:45 web.1  |   File "/home/agconti/my_dev/github/Hunch/venv/local/lib/python2.7/site-packages/flask/app.py", line 772, in run
        22:13:45 web.1  |     run_simple(host, port, self, **options)
        22:13:45 web.1  |   File "/home/agconti/my_dev/github/Hunch/venv/local/lib/python2.7/site-packages/werkzeug/serving.py", line 706, in run_simple
        22:13:45 web.1  |     test_socket.bind((hostname, port))
        22:13:45 web.1  |   File "/usr/lib/python2.7/socket.py", line 224, in meth
        22:13:45 web.1  |     return getattr(self._sock,name)(*args)
        22:13:45 web.1  | socket.error: [Errno 98] Address already in use
        22:13:45 web.1  | exited with code 1
        22:13:45 system | sending SIGTERM to all processes
4

2 回答 2

1

灵魂:

从终端:

heroku config:add PORT=33507

然后将您的应用更改为:

if __name__ == '__main__':
        import os  
        port = int(os.environ.get('PORT', 33507)) 
        app.run(host='0.0.0.0', port=port)

似乎 heroku 为自己的目的保留了烧瓶的默认端口。可以在此处找到详细讨论:将Flask 应用程序部署到 Heroku

于 2013-07-24T14:07:30.960 回答
1

当您终止烧瓶应用程序时,请使用“Control + C”。如果你使用“Control + Z”,它会因为某种原因激活剩余的报告......我不知道为什么,但这似乎是我在 Debian 中的情况(wheezy)。

于 2014-03-25T04:51:27.933 回答