连接池功能如下:
进口mysqlxconnection_str=“mysqlx: / /迈克:s3cr3t !@localhost: 33060”options_string='{}'#空文档客户端=mysqlx.get_client(connection_str,options_string)会话=客户端.get_session()#(…)会话.关闭()客户端.关闭()
连接设置和选项也可以是字典:
进口mysqlxconnection_dict={“主机”:“localhost”,“端口”:33060,“用户”:“迈克”,“密码”:“s3cr3t !”}options_dict={}客户端=mysqlx.get_client(connection_dict,options_dict)会话=客户端.get_session()#(…)会话.关闭()客户端.关闭()
创建的所有会话mysqlx.Client.get_session ()
有池连接,后被哪个关闭mysqlx.Session.close ()
返回连接池,因此可以重用它。
直到现在我们还没有提供任何构型mysqlx。客户端
.我们可以通过在第二个参数中传递dict或JSON文档字符串来设置池选项。
的可用选项mysqlx。客户端
是:
选项={“池”:{“启用”:(保龄球),# [True | False],默认为True“max_size”:(int),#每个池最大连接数“max_idle_time”:(int),连接将保持活动状态的#毫秒#当不使用时。默认为0,表示无穷大。“queue_timeout”:(int),#毫秒请求将等待一个连接#变为可用。默认为0,表示无穷大。}}
要在客户端中禁用池化,可以设置启用
选项假
:
客户端=mysqlx.get_client(connection_str,{“池”: {“启用”:假}})
要定义池的最大大小,可以设置max_size
在池
选项。在下面的例子中“max_size”:5
将5设置为池中允许的最大连接数。
connection_dict={“主机”:“localhost”,“端口”:33060,“用户”:“迈克”,“密码”:“s3cr3t !”}options_dict={“池”: {“max_size”:5,“queue_timeout”:1000}}客户端=mysqlx.get_client(connection_dict,options_dict)为_在范围(5):客户端.get_session()#将引发一个池错误:已经达到池的最大大小客户端.get_session()
的queue_timeout
设置请求等待连接可用的最大毫秒数。默认值为0
(零)和意味着无限。
下面的例子显示了必须等待会话可用的线程的使用情况:
进口mysqlx进口时间进口随机从线程进口线程connection_dict={“主机”:“localhost”,“端口”:33060,“用户”:“迈克”,“密码”:“s3cr3t !”}options_dict={“池”: {“max_size”:6,“queue_timeout”:5000}}schema_name=“测试”collection_name=“collection_test04”def工作(客户端,worker_number):这个方法为一个线程保存任务。参数:客户端(client):获取会话与服务器交互。Worker_number (int):工作人员的id号。”“”兰德=随机.随机()worker_name=“Worker_{}”.格式(worker_number)打印(“工作人员:{}\ n”.格式(worker_name))#工作前打个盹,(有机会让其他线程开始)时间.睡眠(兰德.用于产生基质的均匀分布的随机整数(0,9)/10)#从客户端获取会话session1=客户端.get_session()#制定一个计划模式=session1.get_schema(schema_name)#让集合放入一些文档集合=模式.get_collection(collection_name)#添加10个文档到集合中为_在范围(10):集合.添加({“名字”:worker_name}).执行()#关闭会话session1.关闭()打印(”工作人员:{}完成\ n”.格式(worker_name))defcall_workers(客户端,job_thread,工人):"""创建并启动线程。参数:client (client):获取会话。Job_thread (method):每个线程运行的方法。Workers (int):要创建的线程数。”“”workers_list=[]为n在范围(工人):workers_list.附加(线程(目标=job_thread,arg游戏=[客户端,n)))为工人在workers_list:工人.开始()#让客户端管理会话客户端=mysqlx.get_client(connection_dict,options_dict)#获取一个会话来创建模式和集合session1=客户端.get_session()模式=session1.create_schema(schema_name)集合=模式.create_collection(collection_name)#关闭会话以获得另一个空闲连接session1.关闭()#调用call_workers与客户端,方法运行的线程和#线程数,在这个例子中是18个工人call_workers(客户端,工作,18)给工人一些时间做这项工作时间.睡眠(10)session1=客户端.get_session()模式=session1.get_schema(schema_name)集合=模式.get_collection(collection_name)打印(集合.找到().执行().fetch_all())
最后一次打印的输出将如下所示:
[{“_id”:“00005 b770c7f0000000000000389”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f000000000000038a”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f000000000000038b”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f000000000000038c”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f000000000000038d”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f000000000000038e”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f000000000000038f”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f0000000000000390”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f0000000000000391”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f0000000000000392”,“名字”:“Worker_2”},\{“_id”:“00005 b770c7f0000000000000393”,“名字”:“Worker_1”},\{“_id”:“00005 b770c7f0000000000000394”,“名字”:“Worker_4”},\{“_id”:“00005 b770c7f0000000000000395”,“名字”:“Worker_1”},\{“_id”:“00005 b770c7f0000000000000396”,“名字”:“Worker_4”},\{“_id”:“00005 b770c7f0000000000000397”,“名字”:“Worker_7”},\{“_id”:“00005 b770c7f0000000000000398”,“名字”:“Worker_1”},\{“_id”:“00005 b770c7f0000000000000399”,“名字”:“Worker_4”},\{“_id”:“00005 b770c7f000000000000039a”,“名字”:“Worker_7”},\{“_id”:“00005 b770c7f000000000000039b”,“名字”:“Worker_1”},\{“_id”:“00005 b770c7f000000000000039c”,“名字”:“Worker_4”},\{“_id”:“00005 b770c7f000000000000039d”,“名字”:“Worker_7”},\{“_id”:“00005 b770c7f000000000000039e”,“名字”:“Worker_1”},\{“_id”:“00005 b770c7f000000000000039f”,“名字”:“Worker_8”},\{“_id”:“00005 b770c7f00000000000003a0”,“名字”:“Worker_4”},\{“_id”:“00005 b770c7f00000000000003a1”,“名字”:“Worker_7”},\...\{“_id”:“00005 b770c7f000000000000043c”,“名字”:“Worker_9”})
的18工作人员随机轮流将他们的文档添加到集合中,只共享6活动连接由“max_size”:6
在options_dict
在创建时赋予客户端实例mysqlx.get_client (connection_dictoptions_dict) ()
.