假设我有下面的zerorpc服务器
#server side
import zerorpc
class API():
def long_running_task(self):
print('1 - started long_running_task')
#for instance a long running SQL query
zerorpc.gevent.sleep(10)
print('2 - finished long_running_task')
def other_task(self):
print('1 - started other_task')
pass
print('2 - finished other_task')
s = zerorpc.Server(API())
s.bind("tcp://0.0.0.0:4444")
zerorpc.gevent.spawn(s.run)
while True:
zerorpc.gevent.sleep(10)
以及同时发送多个请求的客户端应用程序
^{pr2}$问题是,当长时间运行的任务正在执行时,另一个任务却没有开始运行。在
所需输出为:
1 - started long_running_task
1 - started other_task
2 - finished other_task
2 - finished long_running_task
而不是
1 - started long_running_task
2 - finished long_running_task
1 - started other_task
2 - finished other_task
这里有一些错误
async_
应该是async
。这样可以确保客户机方法立即返回gevent.spawn(s.run)
启动服务器。同时也能让你的主要绿皮跑起来。在time.sleep()
代替time.sleep()
。在相关问题 更多 >
编程相关推荐