我的问题如下:在我的Flask Restx应用程序中,我创建了一个与Flask应用程序的主线程异步运行的Runner线程。
现在,当我像往常一样进行更改时,调试器仍然显示* Detected change in 'XXXXX', reloading
,这是一个有用的功能。问题是,现在它卡住了,无法重新加载,因为正在运行的线程必须手动停止。
如果可能的话,我仍然希望将自动重载与异步Runner线程结合使用。是否有可能通过触发事件或类似事件来"检测"这些重新加载?然后我可以手动关闭Runner线程,然后用应用程序重新启动它。或者是否至少有可能不阻止重新装载,以便继续重新装载烧瓶restx相关材料?
提前感谢您的帮助。
附言:我发现很难在这里添加代码,因为我不知道烧瓶应用程序的哪些部分很重要。如果你需要任何代码来回答这个问题,我会在编辑中添加它。
如果您想让重载程序工作,您需要将线程设置为守护进程线程。重载程序将尝试终止并重新启动程序(通过终止主线程(,但由于您的另一个线程不是守护进程,它将无法终止程序并重新加载程序。守护进程线程的寿命仅与主线程的寿命一样长,因此使您的其他线程成为守护进程将解决您的问题。这里有一个例子:
from threading import Thread
...
t = Thread(...)
t.daemon = True # this makes your thread a daemon thread
t.start()