omniORBpy прекращение работы сервера - PullRequest
1 голос
/ 07 декабря 2011

Я работаю над клиент-серверным приложением 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

Кто-нибудь знает, что мне нужно сделать, чтобы правильно завершить работу сервера?

Ответы [ 2 ]

0 голосов
/ 08 декабря 2011

Вы не можете выключить сервер (даже не при одностороннем вызове). Вы должны изменить «флаг», чтобы он часто проверялся. Если он установлен, выключите сервер.

Например, в псевдокоде:

def shutdown():
  self.shutdown = True

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

Или как то так. Другими словами; не убивайте сервер при удаленном вызове.

0 голосов
/ 07 декабря 2011

Вы сделали метод выключения односторонним методом в IDL?

...