【发布时间】:2018-02-13 15:30:15
【问题描述】:
我已按照在线文档安装GNU health FHIR REST server。
我已经设法让 REST 服务器应用程序在我的服务器机器上运行。 According to the documentation,我的服务器应该可以使用以下端点:
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。
【问题讨论】:
-
这段代码看起来是正确的,如果我替换我自己的
create_app函数,它就可以工作。问题一定出在app或config模块中。 -
@BenDarnell 您的 Tornado 实例在哪个端口上运行?另外,在我的问题中,我想知道如何使用
curl与服务器交谈 - 我该怎么做? -
另外,您知道我如何调试龙卷风应用程序代码(我的问题中提供的代码)。无法打印到控制台或将变量记录到文件使调试和解决问题变得更加困难。
-
我使用的是 5000 和相同的 curl 命令。在 Tornado 应用程序中打印到控制台正常工作,因此在进入网络问题之前,首先要弄清楚打印问题发生了什么。尝试在每一行添加打印以查看它停止的位置。
-
创建服务器并只监听,
listen不是alive,任何套接字都可以在没有OK信号的情况下运行?