Flask + Tornado 应用 - 如何与服务器通信(连接被拒绝)

6

我按照在线文档安装了GNU health FHIR REST server

我成功地在服务器上运行了REST服务器应用程序。根据文档, 我的服务器上应该有以下端点可用:

List all patients (http://localhost:5000/Patient)
Show info for patient id #1 (http://localhost:5000/Patient/1)
List all patients with ana in name (http://localhost:5000/Patient?name=ana)

# etc ...

这是用于启动Tornado服务器的Python代码:
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, options
from app import create_app
from config import ProductionConfig

define("port", default=5000, help="Port to listen on", type=int)
#app = create_app(config=ProductionConfig)
app = create_app() #DebugConfig
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(options.port)
IOLoop.instance().start()

我使用curl尝试查询服务器:

curl http://localhost:5000/Patient
curl: (7) Failed to connect to localhost port 5000: Connection refused

注意:从上面粘贴的代码中可以猜测,Tornado服务器正在监听5000端口。我修改了代码以打印`options.port`的值,但由于某些原因,它没有被打印到控制台上;同时也未能将该值记录到文件中(文件未写入,并且没有错误消息)-所以不确定发生了什么。
我使用`lsof`进行了双重检查,以查看哪些端口是打开的:
$ lsof -i
COMMAND   PID      USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python2 23147 morpheous    4u  IPv6 592698      0t0  TCP localhost:51950->localhost:8000 (ESTABLISHED)

我需要帮助确定Tornado正在运行的端口,以便我可以使用curl查询REST API。


我之前使用了5000和同样的curl命令。在Tornado应用程序中,将输出打印到控制台通常是正常的,因此在处理网络问题之前,请先弄清楚您的打印问题出在哪里。尝试在每一行添加一个打印语句,以查看它停在哪里。 - Ben Darnell
创建服务器并仅侦听,listen不是alive,任何套接字都可以在没有OK信号的情况下运行吗? - dsgdfg
@dsgdfg 抱歉,我不明白你写的是什么。你能否请再解释一下?谢谢。 - Homunculus Reticulli
ProductionConfigcreate_app中有什么内容? - Oluwafemi Sule
执行 lsof -P |grep "^Python .*(LISTEN)$" 命令。我认为你的端口可能被覆盖在 ProductionConfigcreate_app 中。 - Oluwafemi Sule
显示剩余5条评论
1个回答

0

如果出现连接被拒绝的情况,可能是权限问题或者该端口上没有运行任何程序。在您的情况下,我猜测5000端口上没有运行任何程序。

请使用以下命令进行检查

ss -ltp

您可能需要使用sudo以列出所有带有端口和用户的TCP连接

(例如) sudo ss -ltp

我的输出:

LISTEN 0 128 *:6379 : users:(("redis-server",pid=12325,fd=5))

注意:我只列出了我的列表中的一个输出。

这告诉我Redis正在6379端口上运行。

如果Tornado正在运行,则在执行此命令时会为您列出它。

如果您遇到任何问题,请告诉我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接