Я пытаюсь создать COM-сервер для получения информации в режиме реального времени. Проблема заключается в том, что все остальные функции останавливаются, пока открыт локальный сервер. Остальная часть кода запускается только когда локальный сервер закрыт.
Я искал решения и не смог попробовать мультипроцессор не потому, что это не сработает, я думаю, потому что я отстой. Во всяком случае, я застрял в этой части.
import pythoncom
import win32com
from win32com.server import localserver
from multiprocessing import Process
class PythonUtilities(object):
_reg_clsid_ = '{D9C54599-9011-4678-B1EB-A07FD272F0AF}'
_reg_desc_ = "Change information between programs"
_reg_progid_ = "Python.LetsTalk"
_public_attrs_ = ['speech', 'roger']
_readonly_attrs_ = ['roger']
_public_methods_ = ['talktome']
def __init__(self):
self.roger = 'roger'
self.speech = None
def talktome(self,speech):
self.speech = speech
print ('New speech received: ' + self.speech)
return self.roger
### ___ ###
def runserver(mess):
print(mess)
localserver.serve(['{D9C54599-9011-4678-B1EB-A07FD272F0AF}'])
if __name__=='__main__':
pu = PythonUtilities
print ("Registering COM Server ")
win32com.server.register.UseCommandLine(pu)
# Fine so far.
# The problem starts here:
localserver.serve(['{D9C54599-9011-4678-B1EB-A07FD272F0AF}'])
#... rest of the code waiting for localserver be closed
# Experiment... Doesnt work:
#proc = Process(target=runserver, args = ('starting process',))
#proc.start()
#proc.join()
Важно сказать, что все сообщения, отправленные с клиента, отображаются правильно, НО ТОЛЬКО ПОСЛЕ того, как я закрываю локальный сервер вручную. Я хочу получать его в режиме реального времени, как приложение для чата. Я хочу сохранить локальный сервер открытым и иметь возможность работать с информацией, полученной в остальной части кода.