目前,我创建了一个库来记录后端调用,例如对boto3
and requests
库,然后根据一些数据(例如响应的状态代码等)填充全局“数据”对象。
我原来有data
对象作为全局的,但后来我意识到这是一个坏主意,因为当应用程序并行运行时,data
对象同时被修改(这可能会损坏它),但是我想为应用程序的每次调用保留该对象。
因此,我研究了 Flask 上下文局部变量,类似于它对其全局“请求”对象的处理方式。我设法使用 LocalProxy 实现一种方法他们是怎么做到的 https://stackoverflow.com/a/38945407/10237506,所以它现在可以很好地处理对我的应用程序的并行请求 - 但现在的问题是,每当应用程序生成一个新的子线程时,它都会创建一个全新的上下文,因此我无法检索data
来自其父线程的对象,例如对于该请求会话 - 基本上我需要复制和修改相同的内容data
该特定应用程序请求的主线程本地对象。
澄清一下,我以前能够做到这一点data
作为真正的“全局”对象 - 多个子线程可以正确修改同一对象。然而,正如我所提到的,它不处理同时向应用程序发出请求的情况;所以我设法解决这个问题,但现在子线程无法修改相同的内容data
不再反对*悲伤的脸*
我查看了如下所示的一些解决方案,但这对我没有帮助,因为装饰器方法仅适用于“本地”函数。由于我需要装饰的函数是“全局”函数,例如requests.request
跨各种应用程序请求的线程将使用,我认为我需要使用另一种方法,我可以临时复制相同的线程上下文以在子线程中使用(我的理解是它不应该覆盖或装饰函数,因为这是一个“全局”,将由对应用程序的同时请求使用)。我将不胜感激任何帮助或可能的想法,如何使这项工作适合我的用例。
谢谢。
启动子线程时,Flask 抛出“在请求上下文之外工作” https://stackoverflow.com/questions/9931738/flask-throwing-working-outside-of-request-context-when-starting-sub-thread
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)