У меня простой витой TCP-сервер, работающий абсолютно нормально, он в основном работает с запросами к базе данных и отображает правильные вещи, это просто эхо-клиент с набором функций, база данных, которая читается, также обновляет, у меня есть эта функция обновленияоткройте базу данных и обновите ее, однако, если я добавлю это к функциям сообщений, ответ займет слишком много времени, так как функция обновления занимает около 6/7 секунд, моя первоначальная идея заключалась в том, чтобы эта функция была в цикле while и работалапостоянно обновляется каждые 5/10 минут, но после прочтения информации о глобальной блокировке интерпретатора я подумал, что это невозможно, и любые предложения о том, как запустить эту функцию на фоне моего кода, будут высоко оценены
Я попытался поместить его в поток, но он, кажется, не запускается вообще, когда я запускаю поток, я помещаю его под if name == ' main ':функция и не повезло!
Вот моя функция обновления
def refreshit()
Application = win32com.client.Dispatch("Excel.Application")
Workbook = Application.Workbooks.open(database)
Workbook.RefreshAll()
Workbook.Save()
Application.Quit()
xlsx = pd.ExcelFile(database)
global datess
global refss
df = pd.read_excel(xlsx, sheet_name='Sheet1')
datess = df.groupby('documentDate')
refss = df.groupby('reference')
class Echo(Protocol):
global Picked_DFS
Picked_DFS = None
label = None
global errors
global picked
errors = []
picked = []
def dataReceived(self, data):
"""
As soon as any data is received, write it back.
"""
response = self.handle_message(data)
print('responding with this')
print(response)
self.transport.write(response)
def main():
f = Factory()
f.protocol = Echo
reactor.listenTCP(8000, f)
reactor.run()
if __name__ == '__main__':
main()
Я имел трид это безрезультатно
if __name__ == '__main__':
main()
thread = Thread(target = refreshit())
thread.start()
thread.join()