首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS上运行cherrypy应用程序:无法创建套接字

在AWS上运行cherrypy应用程序:无法创建套接字
EN

Stack Overflow用户
提问于 2021-03-06 14:46:34
回答 1查看 59关注 0票数 0

我在我的Windows PC上开发了一个小的web应用程序,并在本地进行了测试。

然后我想把它转移到一个AWS Ubuntu 18实例上。

为简洁起见,该应用程序处理来自网页的表单,并将用户重定向到具有结果的页面。应用程序的内容并不重要,因为错误发生在您可以与其交互之前。

我没有遇到任何问题,在本地运行它(即与下面相同的代码,没有cherrypy.config.update)。

代码语言:javascript
复制
import cherrypy
import os
filepath = os.getcwd()

class MyApp(object):
    @cherrypy.expose
    def index(self):
        with open('./index.html', 'r') as f:
            text = f.read()
        return text
    @cherrypy.expose
    def process_filled_form(self, field1, field2):
        out = filed1+field2
        return(out)

if __name__ == '__main__':
    config = {"/folder": {"tools.staticdir.on": True,
                        "tools.staticdir.dir": os.path.join(filepath, "folder")}}
    cherrypy.config.update({'server.socket_host': 'XXX.XXX.XXX.XXX',
                            'server.socket_port': 9028,})
    cherrypy.quickstart(MyApp(), '/', config)

但是,当我尝试在AWS实例上公开该应用程序时,我收到以下错误:

代码语言:javascript
复制
[06/Mar/2021:06:25:12] ENGINE Listening for SIGTERM.
[06/Mar/2021:06:25:12] ENGINE Listening for SIGHUP.
[06/Mar/2021:06:25:12] ENGINE Listening for SIGUSR1.
[06/Mar/2021:06:25:12] ENGINE Bus STARTING
[06/Mar/2021:06:25:12] ENGINE Started monitor thread 'Autoreloader'.
[06/Mar/2021:06:25:12] ENGINE Error in HTTP server: shutting down
Traceback (most recent call last):
  File "/home/user/.conda/envs/user_app/lib/python3.9/site-packages/cherrypy/process/servers.py", line 225, in _start_http_thread
    self.httpserver.start()
  File "/home/user/.conda/envs/user_app/lib/python3.9/site-packages/cheroot/server.py", line 1836, in start
    self.prepare()
  File "/home/user/.conda/envs/user_app/lib/python3.9/site-packages/cheroot/server.py", line 1791, in prepare
    raise socket.error(msg)
OSError: No socket could be created -- (('XXX.XXX.XXX.XXX', 9028): [Errno 99] Cannot assign requested address)

[06/Mar/2021:06:25:12] ENGINE Bus STOPPING
[06/Mar/2021:06:25:12] ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('XXX.XXX.XXX.XXX', 9028)) already shut down
[06/Mar/2021:06:25:12] ENGINE Stopped thread 'Autoreloader'.
[06/Mar/2021:06:25:12] ENGINE Bus STOPPED
[06/Mar/2021:06:25:12] ENGINE Bus EXITING
[06/Mar/2021:06:25:12] ENGINE Bus EXITED

更改套接字不会影响任何内容。在AWS上本地启动时,该应用程序不会产生任何错误。

我对任何与网络相关的东西都是全新的,所以问题可能是smt非常明显。也许,我在配置中遗漏了什么,或者quickstart可能不是启动应用程序的正确选择。

请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2021-03-07 00:12:04

很可能您绑定到了错误的地址。

config.update调用中,将socket_host值修改为0.0.0.0

代码语言:javascript
复制
cherrypy.config.update({'server.socket_host': '0.0.0.0',
                        'server.socket_port': 9028,})

这应该允许你的应用程序监听主机中所有可用的网络地址上的请求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66503152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档