2017-11-08 148 views
6

Bir kereviz görevinde GRPC sunucusuna bağlanmaya çalışıyorum. Ben grpc zaman aşımı

timeout = 1 
    host = '0.tcp.ngrok.io' 
    port = '7145' 
    channel = grpc.insecure_channel('{0}:{1}'.format(host, port)) 
    try: 
     grpc.channel_ready_future(channel).result(timeout=timeout) 
    except grpc.FutureTimeoutError: 
     sys.exit(1) 
    stub = stub(channel) 

Python kabuğunda aracılığıyla bu pasajı çalıştırmak kod

aşağıdaki parça var, ben GRPC yöntemleri bağlantı kurmak ve yürütmek mümkün. Ancak, bunu Kereviz göreviyle çalıştırdığımda, grpc.FutureTimeoutError'u aldım ve bağlantı kurulamıyor.

Kereviz işçisi, grpc sunucusuyla aynı makinede yatıyor. GRPC sunucusuna ping yapmak için socket kütüphanesini kullanmayı denedim ve işe yaradı (Bazı önemsiz yanıt verdi).

grpcio==1.6.0 yüklü Python 2.7 kullanıyorum. Kereviz versiyonu 4.1.0. Herhangi bir işaretçi yardımcı olacaktır.

+0

Kabuğu ve kerevizi aynı makinede mi çalıştırıyorsunuz? Burada güvenlik duvarı olmadığından emin misin? – kichik

+0

Aynı makinede çalışıyorlar. Bir bağlantı sorunu olmamalıdır, çünkü Kereviz görevinde, 'socket' kütüphanesi ile bağlanmayı denedim. Bu çalıştı (ancak olmasa da) grpc sunucusuna isabet başardı – saurabhsood91

cevap

4

Celery'in kaputun altında çatal kullandığını ve gRPC 1.6'nın herhangi bir forking davranışını desteklemediğine inanıyorum.

gRPC'ye güncellemeyi deneyin 1.7.

+0

çalıştı! Cevap için teşekkürler! – saurabhsood91

+0

İki üst düzey mühendis, bunu izlemek için 3 saat sürdü. Keşke daha önce aramış olsaydık. – sberry