服务器的响应一直一直发送不过去,zeroRPC:在发送响应后继续运行进程

本文探讨了使用ZeroRPC实现客户端与服务器通信时遇到的问题。针对长时间运行的任务,如何避免因心跳超时导致连接丢失,同时确保客户端能够在收到服务器确认消息后及时断开连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用Python2.7和zeroRPC使客户机和服务器通信。我希望客户端向服务器发送一个请求,我希望服务器发送一个响应以确认它已收到请求。但是我希望服务器对该请求执行一些繁重的计算。这些计算将花费数小时,并且不会产生任何响应,因此客户机不应该一直等待;客户机-服务器连接应该在服务器确认收到请求后立即终止。我该怎么做?在

这是我现在所拥有的(简化)。在

服务器代码:impor time

import zerorpc

class HelloRPC(object):

def hey(self, name):

print 'Hey, %s' % name # just so I can check that the request was received

# send response confirming that request was received

# terminate connection

time.sleep(100000000000000) # some heavy computations

s = zerorpc.Server(HelloRPC())

s.bind('tcp://0.0.0.0:4242')

s.run()

客户代码:

^{pr2}$

它不起作用:我得到zerorpc.exceptions.LostRemote: Lost remote after 10s heartbeat。我知道我可以使用heartbeat参数使连接无限期地持续,但是正如我所说的,计算将花费数小时并且不会产生任何响应,因此我认为我不应该保持连接的有效性。在

我读过gevent,但是我不知道如何使用它来达到这个目的(它甚至是这个工作的正确工具吗?)。我应该使用Python的多处理包生成子进程还是类似的东西?这种事怎么办?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值