2011-12-07 161 views
1

我正在使用omniORBpy的python客戶端服務器應用程序,我想弄清楚如何正確終止服務器。omniORBpy終止服務器

我有這樣的方法,這樣做:

def shutdown(self): 
    print "---------------------------------------" 
    print "shutdown" 
    orb.shutdown(False) 
    quit() 

但是,當我從調用上述功能的客戶端發送的消息得到這個錯誤:

--------------------------------------- 
shutdown 
omniORB: Caught an unexpected Python exception during up-call. 
terminate called after throwing an instance of 'omni_thread_fatal' 
Aborted 

有誰知道我是什麼必須如何正確結束服務器?

回答

0

無法關閉服務器(即使不是單向呼叫)。您必須更改「標誌」以便經常檢查。如果它已設置,請關閉服務器。

例如,在僞代碼:

def shutdown(): 
    self.shutdown = True 

def run(): 
    while not self.shutdown: 
    workloop() 

或像這樣的東西。換一種說法;不要在遠程調用中終止服務器。

+0

非常感謝!:) –

+0

不客氣... – tuergeist

0

您是否使關閉方法成爲IDL中的單向方法?

+0

是的,我做到了:oneway void shutdownDFS(); –