【问题标题】:Flask-Restx(/Flask-Restplus) detect reloadFlask-Restx(/Flask-Restplus) 检测重载
【发布时间】:2020-04-27 21:05:42
【问题描述】:

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

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

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

提前感谢您的帮助。

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

【问题讨论】:

  • 顺便说一句。我不能用更合适的“flask-restx”标签来标记它,因为它还不存在。

标签: python-3.x flask-restplus flask-restx


【解决方案1】:

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

from threading import Thread

...

t = Thread(...)
t.daemon = True # this makes your thread a daemon thread
t.start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多