Python中的线程本地存储 - 在可扩展性方面的负面影响?
我在想,使用线程本地存储会不会给我带来一些严重的问题。我注意到在Flask中,他们使用了线程本地存储,并提到这可能会在一些不支持线程的服务器上引发问题。这种担忧还是过时的吗?我在Django中用线程本地存储做了一些事情,前面用的是NGINX,后面接的是UWSGI或者Gunicorn,操作系统是Ubuntu 10.04,数据库是Postgres(虽然操作系统和数据库可能不太重要,但我只是想说明一下)。我需要担心这个问题吗?
1 个回答
1
线程本地变量并不是最可靠或最安全的做法,比如你可以看看这篇说明。 [不过也可以看看下面Glenn的评论]
我想如果你写代码的时候很干净,考虑到你是在一个大的全局信息池里放东西,接受线程本地变量中数据一致性不保证的情况,并且小心避免竞争条件等等,你可能会没问题。
但是,即使考虑到这些,线程本地变量还是有点“神秘”,所以清楚地记录下发生了什么,以及每次使用线程本地变量时的情况,可能会对你或将来维护这段代码的开发者有帮助。