我的问题如下:在我的Flask-Restx-Application中,我创建了一个Runner-Thread,它异步运行到Flask-Application的主线程。
现在,当我像往常一样进行更改时,调试器仍然显示* Detected change in 'XXXXX', reloading,这是一个有用的特性。问题是,现在它卡住了,无法重新加载,因为正在运行的线程必须手动停止。
如果可能的话,我仍然希望将自动重载与异步Runner-Thread结合使用。是否有可能通过触发事件或类似事件来“检测”这些重新加载?然后我可以手动关闭Runner-Thread,然后用应用程序重新启动它。或者至少有可能不阻止重新加载,以便继续重新加载与flask-restx相关的内容?
提前感谢您的帮助。
PS:我发现很难在这里添加代码,因为我不知道flask-app的哪些部分是重要的。如果你需要任何代码来回答这个问题,我会将它添加到Edit中。
发布于 2020-11-18 22:42:10
如果你想让重装器工作,你需要让你的线程成为守护线程。重装器将尝试终止并重新启动程序(通过终止主线程),但是因为您的另一个线程不是守护进程,所以它将无法终止程序并重新加载它。守护程序线程只在主线程存在的时间内存在,因此将另一个线程设置为守护程序可以解决您的问题。下面是一个示例:
from threading import Thread
...
t = Thread(...)
t.daemon = True # this makes your thread a daemon thread
t.start()https://stackoverflow.com/questions/61468454
复制相似问题