Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Flask框架中,线程局部是什么意思?_Python_Web Services_Scalability_Flask - Fatal编程技术网

Python 在Flask框架中,线程局部是什么意思?

Python 在Flask框架中,线程局部是什么意思?,python,web-services,scalability,flask,Python,Web Services,Scalability,Flask,我正在评估python框架以构建RESTAPI。我已经浏览了包括flask在内的许多框架,发现flask非常有趣且易于使用,具有构建RESTWeb服务所需的所有功能 我不知道的一件事是,在flask文档中提到,它使用“线程本地,并且在可伸缩性方面存在问题” Flask使用线程本地对象(实际上,上下文本地对象 还支持greenlet上下文)以获得请求、会话和额外的 你可以把自己的东西放在(g)上的对象。这是为什么,不是吗 坏主意?是的,使用线程通常不是一个好主意 当地人。它们会给不基于的服务器带来

我正在评估python框架以构建RESTAPI。我已经浏览了包括flask在内的许多框架,发现flask非常有趣且易于使用,具有构建RESTWeb服务所需的所有功能

我不知道的一件事是,在flask文档中提到,它使用“线程本地,并且在可伸缩性方面存在问题”

Flask使用线程本地对象(实际上,上下文本地对象 还支持greenlet上下文)以获得请求、会话和额外的 你可以把自己的东西放在(g)上的对象。这是为什么,不是吗 坏主意?是的,使用线程通常不是一个好主意 当地人。它们会给不基于的服务器带来麻烦 线程的概念,使大型应用程序更难维护。 然而,烧瓶并不是为大型应用而设计的 异步服务器。Flask想让编写一个 传统的web应用程序


有人能帮助我理解这一点吗?提到了哪些可伸缩性问题,以及其他框架是如何处理的???

这实际上不是一个可伸缩性问题,而是它会使维护复杂的代码库变得更加困难。这是因为线程局部变量被用作全局数据存储,以避免通过函数参数传递状态,这使得跟踪发生的事情变得更加困难


就速度而言,线程局部变量并不特别慢,但它们确实使使用异步框架变得困难或不可能,在异步框架中,许多任务在单个线程上短时间运行。

那么,你是说线程局部变量有两个不同的问题:(1)程序员必须考虑变量的状态,这使得编程非常困难;(2)常用的异步编程框架在存在线程局部变量的情况下根本无法工作?