我想知道我是否可能通过使用线程本地创建一些严重的影响。我注意到在Flask的情况下,they use thread locals,并提到它可能会导致服务器出现问题,而这些服务器并未构建为线程。这是一个过时的问题吗?我正在使用Django的线程局部用于一些事情,在UWSGI前面使用NGINX,或者使用Postgres在Ubuntu 10.04上部署Gunicorn(不是操作系统或数据库可能很重要,但为了清晰起见)。我需要担心吗?
答案 0 :(得分:0)
Threadlocals不是最强大或最安全的做事方式 - 例如,请查看this note。 [虽然也见格伦的评论,见下文]
我想如果你已经干净利落地编码了,你想把这些东西放到一大堆信息中,接受那些线上当地人的无担保数据一致性并注意避免竞争条件等等,你可能会好吧。
但是,即使考虑到这一点,仍然存在线程局部变量的'魔力',因此清楚地记录了发生了什么,并且任何时候使用threadedlocal var都可能帮助您/未来的代码库开发人员失败这条线。