1

我的问题如下:在我的 Flask-Restx-Application 中,我创建了一个 Runner-Thread,它与 Flask-Application 的主线程异步运行。

现在,当我像往常一样进行更改时,调试器仍然显示* Detected change in 'XXXXX', reloading这是一个有用的功能。问题是现在它卡住了并且由于必须手动停止正在运行的线程而无法重新加载。

如果可能的话,我仍然希望将自动重新加载与异步 Runner-Thread 结合使用。是否有可能通过触发事件或类似的东西来“检测”这些重新加载?然后我可以手动关闭 Runner-Thread 并使用应用程序重新启动它。或者至少有可能不阻止重新加载以继续重新加载与flask-restx相关的东西?

提前感谢您的帮助。

PS:我发现这里很难添加代码,因为我不知道烧瓶应用程序的哪些部分很重要。如果您需要任何代码来回答问题,我会将其添加到编辑中。

4

1 回答 1

1

如果您希望重新加载器工作,您需要使您的线程成为守护线程。重新加载器将尝试终止并重新启动程序(通过终止主线程),但由于您的其他线程不是守护程序,因此它将无法终止程序并重新加载它。守护线程是一个只在主线程存在的情况下存在的线程,因此使您的另一个线程成为守护线程将解决您的问题。这是一个例子:

from threading import Thread

...

t = Thread(...)
t.daemon = True # this makes your thread a daemon thread
t.start()
于 2020-11-18T14:42:10.313 回答