Следующий код работал для меня.
Я использовал два потока один, чтобы получить raw_Input, а другой - ждать определенного времени. Если какой-либо из потоков выходит, оба потока завершаются и возвращаются.
def _input(msg, q):
ra = raw_input(msg)
if ra:
q.put(ra)
else:
q.put("None")
return
def _slp(tm, q):
time.sleep(tm)
q.put("Timeout")
return
def wait_for_input(msg="Press Enter to continue", time=10):
q = Queue.Queue()
th = threading.Thread(target=_input, args=(msg, q,))
tt = threading.Thread(target=_slp, args=(time, q,))
th.start()
tt.start()
ret = None
while True:
ret = q.get()
if ret:
th._Thread__stop()
tt._Thread__stop()
return ret
return ret
print time.ctime()
t= wait_for_input()
print "\nResponse :",t
print time.ctime()
Вы можете попробовать аннотацию @component поверх класса GameClientCommunicationBusiness.
Проблема в том, что вы не связали класс реализации.