代码之家  ›  专栏  ›  技术社区  ›  POV

是否可以在没有端口的情况下运行烧瓶?[复制品]

  •  -1
  • POV  · 技术社区  · 5 年前

    我试着在托管时用以下方法清洗烧瓶:

    if __name__ == "__main__":
        app.run('0.0.0.0', 8000)
    

    但是主机有8080端口关闭,可以用默认端口80运行烧瓶吗?

    我试过了,它给了我这个错误:

    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号门是开放的。

    1 回复  |  直到 5 年前
        1
  •  1
  •   brunston    5 年前

    这个 Flask documentation 声明:

    虽然flask_的内置服务器重量轻且易于使用,但 适合生产,因为它的规模不好。一些选择 可用于生产中正常运行的烧瓶记录在案。 在这里。

    文档还说明了使用WSGi服务器部署Web应用程序的几种方法。wsgi(Web服务器网关接口)是一个标准,它将来自Web服务器的请求转发到用python编写的Web应用程序。您将希望使用wsgi服务器在主机上运行您的网站,因为听起来您正尝试将flask应用程序部署到生产设置中。

    为了回答您最初的问题,当您尝试在端口80上运行flask时,flask库故意抛出一个错误,因为它们特别指出您不应将flask的内置服务器用于生产用途。这是StackTrace的一部分:

    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服务器。它是一个A Pre-Fork Worker模型移植自Ruby的Unicorn项目。它支持 Eventlet和Greenlet。在此服务器上运行flask应用程序 很简单:

    Gunicorn MyProject:应用程序

    gunicorn提供了许多命令行选项,请参见gunicorn-h。 示例,使用4个工作进程运行flask应用程序(-w 4) 绑定到本地主机端口4000(-B 127.0.0.1:4000):

    Gunicorn-W 4-B 127.0.0.1:4000我的项目:应用程序