2017-11-08 2 views
6

셀러리 작업에서 GRPC 서버에 연결하려고합니다. 내가 셀프 작업에서 grpc 시간 초과가 발생했습니다.

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) 

내가 파이썬 쉘을 통해이 코드를 실행 코드

의 다음 조각이, 나는 GRPC 방법을 연결을 설정하고 실행할 수입니다. 그러나 셀러리 작업을 통해이 작업을 실행하면 grpc.FutureTimeoutError이 발생하고 연결이 설정되지 않습니다.

셀러리 작업자는 grpc 서버와 동일한 컴퓨터에 있습니다. 나는 socket 라이브러리를 사용하여 GRPC 서버를 핑 (ping)하려고 시도했다. 그리고 그것은 효과적이었다 (그것은 약간의 정크 반응을 반환했다).

저는 grpcio==1.6.0이 설치된 Python 2.7을 사용하고 있습니다. Celery 버전은 4.1.0입니다. 모든 포인터가 도움이 될 것입니다.

+0

쉘과 셀러리를 같은 시스템에서 실행하고 있습니까? 여기에 관련된 방화벽이 없다고 확신합니까? – kichik

+0

이들은 동일한 시스템에서 실행 중입니다. Celery 작업에서'socket' 라이브러리로 연결을 시도했기 때문에 연결 문제가 있어서는 안됩니다. grpc 서버에 접속할 수있었습니다 (연결되지 않았 음) – saurabhsood91

답변

4

셀러리가 후드에서 포크를 사용하고 gRPC 1.6이 포크 동작을 지원하지 않는다고 생각합니다.

gRPC 1.7로 업데이트하십시오.

+0

! 답변 해주셔서 감사합니다! – saurabhsood91

+0

수석 엔지니어 2 명을 3 시간 동안 추적했습니다. 우리가 더 일찍 수색 했더라면. – sberry

관련 문제