如何解决Digital Ocean App:两个组件之间通过ZMQ进行通信
总结
我尝试在 Digital Ocean 上构建应用程序。我选择了它的服务/产品“应用程序”。 我的应用程序由 3 个组件组成:
使用的语言是 Python。术语“服务”和“工作器”在 Digital Ocean 应用规范的上下文中。
预期行为
我尝试将请求从客户端组件发送到服务器组件(在收到响应之后)。
我希望这种情况:
- 服务器已启动,正在等待请求
- 客户端启动并发送请求
- 服务器接收请求
- 服务器发送响应
- 客户端收到响应
真实行为
它在第 3 步中断。这意味着服务器永远不会收到请求。 客户端和服务端都启动了,没有任何异常(通过日志确认)
我的尝试
Worker ZMQ 客户端
import time
import zmq
import logging
logging.basicConfig(level=logging.DEBUG)
try:
zmq_context = zmq.Context()
socket = zmq_context.socket(zmq.REQ)
socket.connect("tcp://ZMQServer:55555")
for i in range(5):
logging.debug(f"[CLIENT] Sending request {i}")
socket.send_string("test")
time.sleep(1)
logging.debug(f"[CLIENT] Waiting for a response {i}")
message = socket.recv_string()
logging.debug("[CLIENT] Response received")
except Exception as e:
logging.error(e)
Worker ZMQ 服务器
import time
import zmq
import logging
logging.basicConfig(level=logging.DEBUG)
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:55555")
logging.debug("[SERVER] Starting ZMQ SERVER")
while True:
logging.debug("[SERVER] Waiting for request")
message = socket.recv_string()
time.sleep(1)
logging.debug("[SERVER] Sending response")
socket.send_string("Perfect! It is working.")
应用规范
name: basic-app
region: fra
services:
- environment_slug: python
github:
branch: main
deploy_on_push: true
repo: ...
http_port: 8080
instance_count: 1
instance_size_slug: basic-xs
name: c-3
routes:
- path: /
run_command: gunicorn --worker-tmp-dir /dev/shm --config gunicorn_config.py app:app
source_dir: /
internal_ports:
- 55555
workers:
- environment_slug: python
github:
branch: main
deploy_on_push: true
repo: ...
instance_count: 1
instance_size_slug: basic-xs
name: ZMQServer
run_command: python zmq_server.py
source_dir: /
- environment_slug: python
github:
branch: main
deploy_on_push: true
repo: ...
instance_count: 1
instance_size_slug: basic-xs
name: ZMQClient
run_command: python client.py
source_dir: /
谢谢您的回答
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。