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

Hom*_*lli 6 python tornado flask

我已经按照在线文档安装了GNU health FHIR REST服务器.

我设法让我的服务器机器上运行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 ...
Run Code Online (Sandbox Code Playgroud)

这是用于启动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()
Run Code Online (Sandbox Code Playgroud)

我曾经curl试图询问服务器:

curl http://localhost:5000/Patient
curl: (7) Failed to connect to localhost port 5000: Connection refused
Run Code Online (Sandbox Code Playgroud)

注意:我猜测(从上面粘贴的代码),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)
Run Code Online (Sandbox Code Playgroud)

我需要帮助确定Tornado运行的端口,所以我可以使用curl来查询REST API.

小智 0

如果权限问题或该端口上没有任何运行,连接将被拒绝。在你的情况下,我猜 5000 上没有任何东西在运行。

请使用此命令检查

SS-LTP

您可能必须使用sudo列出具有端口和用户的所有 tcp 连接

(例如)sudo ss -ltp

我的输出:

听0 128 *:6379 用户:((“redis服务器”,pid = 12325,fd = 5))

注意:我只是在这里列出了我的列表中的一个输出。

这只是告诉我 redis 正在 6379 端口上运行。

如果龙卷风正在运行,它会在触发此命令时为您列出。

如果您在这方面遇到任何问题,请告诉我。