如何在我的扭曲服务器的后台运行我定义的刷新功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在我的扭曲服务器的后台运行我定义的刷新功能相关的知识,希望对你有一定的参考价值。
我有一个简单的扭曲TCP服务器运行绝对精细,它基本上处理数据库请求并显示正确的东西它只是一个带有一堆函数的echo客户端,正在读取的数据库也更新我有这个刷新功能来打开数据库并刷新它但是如果我将它添加到消息函数中它将花费很长时间来响应,因为刷新函数需要大约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()
答案
你在这一行上有一个重要的错误:
thread = Thread(target = refreshit())
虽然你还没有包含refreshit
的定义(也许是考虑重命名的函数),但我认为refreshit
是一个执行刷新的函数。
在这种情况下,你在这里做的是调用refreshit
并等待它返回一个值。然后,它返回的值将用作您在此处创建的Thread
的目标。这可能不是你的意思。代替:
thread = Thread(target = refreshit)
也就是说,refreshit
本身就是你想要的线程目标。
您还需要确保对操作进行排序,以便所有内容同时运行:
if __name__ == '__main__':
# Start your worker/background thread.
thread = Thread(target = refreshit)
thread.start()
# Run Twisted
main()
# Cleanup/wait on your worker/background thread.
thread.join()
您可能只想直接使用use Twisted's thread support而不是threading
模块(但这不是强制性的)。
if __name__ == '__main__':
# Start your worker/background thread.
thread = Thread(target = refreshit)
thread.start()
# Run Twisted
main()
# Cleanup/wait on your worker/background thread.
thread.join()
以上是关于如何在我的扭曲服务器的后台运行我定义的刷新功能的主要内容,如果未能解决你的问题,请参考以下文章