flask_login,如何从新线程获取 current_user?

狮子座

我是flask_login 库的新手。在我的代码库,用户登录后,我可以从当前用户的信息current_userflask_login库。简化的测试代码如下:

from threading import Thread
from flask_login import current_user

def test():
    print("current_user = ", current_user)   # None
worker = Thread(target=test)
worker.start()
print("current_user = ", current_user)       #  <XXX.auth.view.User object at 0x119b2b250>

所以我很困惑为什么我不能从单独的线程中获取当前用户信息,即使我在第一条print语句之前故意再次导入

谢谢。

current_user是一个线程局部值——它将在每个线程中作为一个单独的变量。如果在其他地方需要它,则必须在线程之间传递它。

也许你的电话会变成:

from threading import Thread
from flask_login import current_user

user = current_user

def test(user):
    print("current_user = ", user)

worker = Thread(target=test, args=(user,))
worker.start()

print("current_user = ", user)

来自flask_login来源的相关行

current_user = LocalProxy(lambda: _get_user())

https://github.com/maxcountryman/flask-login/blob/d22f80d166ee260d44e0d2d9ea973b784ef3621b/flask_login/utils.py#L26


来自werkzeug docs的werkzeug对本地人的实现的相关讨论:

Werkzeug 提供了自己的本地数据存储实现,称为 werkzeug.local。这种方法为线程局部变量提供了类似的功能,但也适用于 greenlets。

https://werkzeug.palletsprojects.com/en/0.15.x/local/#werkzeug.local.LocalProxy

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Rails Action Mailer中访问current_user

如何访问模型中的current_user对象?

Flask-Admin / Flask-SQLAlchemy:为INSERT设置user_id = current_user

如何将current_user传递给Sidekiq的Worker

如何在Rails 5中存根current_user?

如何为pytest设置current_user?

如何在烧瓶模板中模拟`current_user`?

Pundit如何通过current_user授权方法?

如何存根zendesk_api current_user获取规格?

Flask-Login中使用current_user的这种方法安全吗?

如何在stimulus_reflex中访问current_user

为什么子线程无法访问flask_login中的current_user变量?

如何创建类似于current_user的函数?

如何在Rails的devise中使用“ current_user”?

PHP如何发布由current_user过滤的数据

这是获取current_user帖子的更快方法

ActiveRecord信誉系统-如何检查current_user投票的值

如果current_user符合要求,如何显示内容

Rspec。如何测试current_user方法

如何使用current_user自动分配评论者?

如何在流星中设置“ current_user”

如何在user_id的veritable的每条记录中传递current_user?滑轨

如何基于current_user进行路由?

如何在Flask-Security的User.query.all()中重构current_user?

JSON API:如何确保资源属于 current_user?

如何获取 current_user 的对话?

如何对 current_user RoR 进行单元测试

Flask-Socketio n'est pas synchronisé avec le current_user de Flask-Login

如何限制 Rails 的 current_user 的 CRUD 内容