我尝试使用以下方式在托管中启动Flask:
if __name__ == "__main__":
app.run('0.0.0.0', 8000)
但是主机托管者关闭了8080端口,是否可以使用默认端口80运行Flask?
我尝试过它给我这个错误:
Use a production WSGI server instead.
* Debug mode: off
Traceback (most recent call last):
File "__init__.py", line 461, in <module>
app.run('0.0.0.0', 80)
File "/home/o/oliwin4/project/public_html/myenv/local/lib/python2.7/site-packages/flask/app.py", line 943, in run
run_simple(host, port, self, **options)
File "/home/o/oliwin4/project/public_html/myenv/local/lib/python2.7/site-packages/werkzeug/serving.py", line 814, in run_simple
inner()
File "/home/o/oliwin4/project/public_html/myenv/local/lib/python2.7/site-packages/werkzeug/serving.py", line 774, in inner
fd=fd)
File "/home/o/oliwin4/project/public_html/myenv/local/lib/python2.7/site-packages/werkzeug/serving.py", line 660, in make_server
passthrough_errors, ssl_context, fd=fd)
File "/home/o/oliwin4/project/public_html/myenv/local/lib/python2.7/site-packages/werkzeug/serving.py", line 577, in __init__
self.address_family), 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 1] Operation not permitted
所以,托管者说80端口是开放的。
答案 0 :(得分:1)
虽然轻巧易用,但Flask的内置服务器却不是 不适合扩展生产,因此适合生产。一些选择 可用于在生产中正确运行Flask的文档 在这里。
该文档还说明了使用WSGI服务器部署Web应用程序的几种方法。 WSGI(Web服务器网关接口)是将来自Web服务器的请求转发到以Python编写的Web应用程序的标准。您将要使用WSGI服务器在主机上运行您的网站,因为这听起来像是您正在尝试将Flask应用程序部署到生产环境中。
为回答您的原始问题,当您尝试在端口80上运行Flask库时,有意将其引发错误,因为它们明确表示您不应将Flask的内置服务器用于生产。这就是您的堆栈跟踪的一部分:
Use a production WSGI server instead.
* Debug mode: off
和
socket.error: [Errno 1] Operation not permitted
对于懒惰的人,或者如果以上链接无效,这是一个使用Gunicorn(copied directly from the above documentation link)的示例
独角兽
Gunicorn“ Green Unicorn”是用于UNIX的WSGI HTTP服务器。它是 Ruby的Unicorn项目移植的前叉工人模型。它支持 eventlet和greenlet。在此服务器上运行Flask应用程序 很简单:
gunicorn myproject:app
Gunicorn提供了许多命令行选项–请参见gunicorn -h。对于 例如,以4个工作进程(-w 4)运行Flask应用程序 绑定到本地主机端口4000(-b 127.0.0.1:4000):
gunicorn -w 4 -b 127.0.0.1:4000 myproject:app