gRPC与pyGTK一起慢速通信

时间:2017-12-03 12:34:25

标签: python multithreading networking pygtk grpc

我正在使用pyGTK和python gRPC服务器。两者都在一个非常基本的设置中。

我只需创建gtk.Window()show()并运行gtk.main()循环。

我的服务器就是这样开始的:

def startServing():
    global server
    print("Starting server...")
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
    laserClient_pb2_grpc.add_LComServicer_to_server(LCom(), server)
    server.add_insecure_port('[::]:50053') # [::] is the same as 0.0.0.0    server.start()
    print("Server is running...")

所以我打电话给:

try:
    startServing()
    gtk.main()
except KeyboardInterrupt:
    server.stop(0)

这会正确创建窗口,但我从未收到来自Java客户端的请求。 (java客户端不是问题。)

我在互联网上阅读了很多内容并且我不理解所有pyGTK线程处理,但我在gtk.gdk.threads_init()之前尝试了startServing()并且我收到了请求。但是我每秒只收到1个请求,而我的客户端每50ms发送一个请求。如果我删除gtk.main()并添加while循环:

while True:
    time.sleep(60)

...我几乎每50到100毫秒收到一次请求。这是预期的行为!

然而,由于没有gtk.main()循环,我的窗口不会更新。我甚至尝试添加:

while True:
    while gtk.events_pending():
        gtk.main_iteration()
    time.sleep(0.05)

但这又给了每秒一次请求。

我不知道我现在该做什么。我真的想在同一个程序中一起使用gRPC和pyGTK。

0 个答案:

没有答案