2017-11-08 2 views
6

Ich versuche, eine Verbindung zu einem GRPC-Server in einer Sellerie Aufgabe. Ich habe das folgende Stück CodeGrpc Timeout in einer Sellerie Aufgabe

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) 

Wenn ich diese Schnipsel durch die Python-Shell laufen, ich bin in der Lage, die Verbindung herzustellen, und führen Sie die GRPC Methoden. Jedoch, wenn ich dies durch die Sellerie-Aufgabe ausführen, bekomme ich die grpc.FutureTimeoutError, und die Verbindung wird nicht hergestellt.

Der Sellerie Arbeiter liegt auf der gleichen Maschine wie der Grpc Server. Ich habe versucht, die socket Bibliothek zu verwenden, um den GRPC-Server zu pingen, und das hat funktioniert (es gab einige Spam-Antwort zurück).

Ich benutze Python 2.7, mit grpcio==1.6.0 installiert. Die Sellerie-Version ist 4.1.0. Alle Hinweise wären hilfreich.

+0

Betreiben Sie Shell und Sellerie auf der gleichen Maschine? Sind Sie sicher, dass hier keine Firewall beteiligt ist? – kichik

+0

Sie laufen auf demselben Rechner. Es sollte kein Verbindungsproblem geben, weil ich in der Sellerie-Aufgabe versucht habe, mich mit der "Socket" -Bibliothek zu verbinden. Es war in der Lage, den Grpc-Server zu treffen (obwohl es keine Verbindung hergestellt hat) – saurabhsood91

Antwort

4

Ich glaube Sellerie verwendet Gabel unter der Haube, und gRPC 1.6 unterstützt keine Gabelung Verhalten.

Versuchen Sie, auf gRPC 1.7 zu aktualisieren.

+0

das hat funktioniert! Danke für die Antwort! – saurabhsood91

+0

Zwei erfahrene Ingenieure drei Stunden benötigt, um es zu verfolgen. Hätten wir nur früher gesucht. – sberry

Verwandte Themen