我有兴趣在 Docker 容器中运行的单个 Python 脚本中运行 2 个服务器。我的初始开发设置是使用 pynetdicom(参见 mpps -scp作为示例。主要感兴趣的是启动服务器运行的行,在我的文件中:
ae.start_server(('python_mpps', 11112), block=True, evt_handlers=handlers)
这里有更详细的文档:start_server
pynetdicom 实现了一个 DICOM 服务器。我不认为它有这个能力,也不是为了使用 HTTP 协议响应 api 请求而设计的。
我的容器中确实有请求模块来向其他服务器发送请求,但我还想添加一个 HTTP 侦听器,比如 Flask,以添加接收和处理 api 请求的能力,所有这些都在同一个 python 脚本中在构建和运行我的 Docker 容器时执行。
我猜 Flask 的基本存根类似于下面的内容,尽管我以前从未使用过。我能够测试这个基本设置在启动时是否有效,而无需启动 pynetdicom,只需使用 curl:http://ip:5000/companies,其中 5000 端口映射到我主机上的 5000。
companies = [{"id": 1, "name": "Company One"}, {"id": 2, "name": "Company Two"}]
api = Flask()
@api.route('/companies', methods=['GET'])
def get_companies():
return json.dumps(companies)
return api
api.run(host='0.0.0.0',port=5000,debug=True)
我真的很想在同一个脚本中运行这两个服务器,因为它们会共享一些通用的方法来处理 DICOM 和 API 请求的请求。我可能可以为每个服务器创建单独的脚本,但我必须维护每个服务器中的方法,或者以某种方式将公共方法库加载到每个服务器脚本中。
只是想知道最好的设置和方法是什么。对于这种应用程序,我对 Python 中的线程一无所知。
谢谢你。