python 常用的数据库驱动怎么做多线程安全?

python 常用的数据库驱动怎么做多线程安全?

djangoflaskfastapi 下使用诸如 pymysqlpymongoelasticsearchredis 这些连接数据库的驱动库的时候,多个线程共用一个数据库连接是安全的吗?

比如对于 pymysql 的搞了一个全局变量作为数据库连接,在不使用事务的情况下,所有的都用这个全局变量来 crud 是线程安全的吗?会窜稀吗?

一般来说对于 pymysql ,如果是线程池,我会用 TLS,如果像 fastapi (实际指 uvicorn)的同步模式用的是非恒定的多线程,我就会搞一个连接池。

但是对于 pymongoelasticsearchredis 我就没有什么经验。

比如 elasticsearch 我全局化一个变量,大家都用这个变量,安全吗?

from elasticsearch import Elasticsearch

from loggers import logger

import settings

index_name = settings.ES_CONFIG.index_name

es = Elasticsearch(

hosts=[f'{settings.ES_CONFIG.host}'],

timeout=10,

http_auth=f'{settings.ES_CONFIG.username}:{settings.ES_CONFIG.password}'

)

又比如 redis 这个库呢?
我看到有些介绍单例模式的时候,会恒定一个 redis 连接来给所有线程用来 crud,这样是并行安全的吗?

以上是 python 常用的数据库驱动怎么做多线程安全? 的全部内容, 来源链接: utcz.com/p/938423.html

回到顶部