나는 다음과 같이 정의 아우토반 PRC 클라이언트 기능이있다. 그것은 잘 작동하고, 전압은 RPC 서버에서 정확하게 읽힌다.동기
하지만 동기 호출을 만들고 싶습니다. 콜백 함수에서 값을 가져 오지 않으면 다음과 같이 보일 것입니다.
def call_server_synchronous_get_voltage(self):
(How to combine above callback function, so that it will be synchronous)
return voltage
내가 시도 :
A) inlinecallback 데코레이터를. 그러나 여전히 지연된 객체를 반환합니다.
@inlineCallbacks
def call_server_synchronous_get_voltage_inlinecallback(self):
#'val' is correct value from server
val = yield self.self.call("http://server.com/server#get_voltage")
#but how to return it????
returnValue(val) #This is deferred object. Not voltage value
누군가가 @inlineCallback을 이해하도록 도와 줄 수 있습니까? 이 목적을 위해이 데코레이터가 있습니까?
b) 나는 크로 셰 뜨개질 @ 웨이트리스 데코레이터를 시험해 보았습니다. 발신자가 콜백을 사라지게해야합니다.
@wait_for(timeout=10)
def call_server_synchronous_get_voltage_crochet(self):
val = self.self.call("http://server.com/server#get_voltage")
val.addCallback(lambda result: result)
return val
이 함수는 올바른 값을 반환합니다. 그러나 그것은 한 번만 작동합니다. Django 서버에서 call_server_synchronous_get_voltage_crochet()
을 호출하여 웹 페이지를 표시하려고합니다.
Lost client connection: [Failure instance: Traceback (failure with no frames): <class 'twisted.internet.error.ConnectionDone'>: Connection was closed cleanly. ]
방법 아우토반 RPC에 전화를하고 동 기적으로 다시 결과를 얻을 : 재 장전 웹 페이지 2 시간, 서버에 아우토반 RPC 연결로 삭제하면 오류인가?
귀하의'wait_for' 코드는 inlineCallbacks' 대신 ... –
내가 내 원래의 질문에 보정을 할 필요가'사용합니다. b) 저는 크로 셰 뜨개질 @wait_for 데코레이터를 사용했습니다. 발신자가 콜백을 사라지게해야합니다. @wait_for (제한 시간 = 5) DEF call_server_synchronous_get_voltage_crochet (자기) 브로 = 항복 self.self.call ("http://server.com/server#get_voltage") val.addCallback (람다 결과 : 결과) 반품 금액 – user3792705
질문 하단의 "수정"버튼을 클릭하십시오. –