Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/playhouse/__pycache__/pool.cpython-311.pyc



]j$3(dZddlZddlZddlZddlZddlZddlmZddlm	Z		ddl
mZddl
mZddl
m
Z
n#e$r	dxZxZZ
YnwxYw	ddlmZn#e$rYnwxYwdd	lmZdd
lmZddlmZejdZd
ZGddeZeddZGddeZdZGddeZGddeeZGddeZ Gdde eZ!	ddl"m#Z#Gdde e#Z$n
#e$rdZ$YnwxYw	dd l%m&Z&Gd!d"ee&Z'n
#e$rdZ'YnwxYwGd#d$eZ(Gd%d&e(eZ)	dd'l*m+Z+Gd(d)e(e+Z,n
#e$rdZ,YnwxYw	dd*l*m-Z-Gd+d,e(e-Z.dS#e$rdZ.YdSwxYw)-aG
Lightweight connection pooling for peewee.

In a multi-threaded application, up to `max_connections` will be opened. Each
thread (or, if using gevent, greenlet) will have it's own connection.

In a single-threaded application, only one connection will be created. It will
be continually recycled until either it exceeds the stale timeout or is closed
explicitly (using `.manual_close()`).

By default, all your application needs to do is ensure that connections are
closed when you are finished with them, and they will be returned to the pool.
For web applications, this typically means that at the beginning of a request,
you will open a connection, and when you return a response, you will close the
connection.

Simple Postgres pool example code:

    # Use the special postgresql extensions.
    from playhouse.pool import PooledPostgresqlExtDatabase

    db = PooledPostgresqlExtDatabase(
        'my_app',
        max_connections=32,
        stale_timeout=300,  # 5 minutes.
        user='postgres')

    class BaseModel(Model):
        class Meta:
            database = db

That's it!
N)
namedtuple)chain)TRANSACTION_STATUS_IDLE)TRANSACTION_STATUS_INERROR)TRANSACTION_STATUS_UNKNOWN)TransactionStatus)
MySQLDatabase)PostgresqlDatabase)SqliteDatabasezpeewee.poolc`|+t|ttfst|S|SN)
isinstanceintfloat)vals E/opt/imunify360/venv/lib64/python3.11/site-packages/playhouse/pool.pymake_intr>s)
z#U|<<3xxJceZdZdS)MaxConnectionsExceededN__name__
__module____qualname__rrrrDsrrPoolConnection)	timestamp
connectionchecked_outceZdZdZdS)	_sentinelcdSNTr)selfothers  r__lt__z_sentinel.__lt__KstrN)rrrr&rrrr!r!Js#rr!cFtjfd}|S)Nc^|j5|g|Ri|cdddS#1swxYwYdSr
)
_pool_lock)r$argskwargsfns   rinnerzlocked.<locals>.innerPs
_	-	-2d,T,,,V,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-s"&&)	functoolswraps)r,r-s` rlockedr0Os8_R-----LrceZdZ		dfd	Z		dfd	Zdfd	ZefdZdZd	Z	d
Z
edfd	ZedZed
Z
eddZedZxZS)PooledDatabaseNcdt||_t||_t||_|jdkrt	d|_tj|_g|_i|_	t|_tt|j|fi|dSNrinf)r_max_connections_stale_timeout
_wait_timeoutr	threadingRLockr)_connections_in_useidconn_keysuperr2__init__)r$databasemax_connections
stale_timeouttimeoutr+	__class__s      rrAzPooledDatabase.__init__Xs ( 9 9&}55%g..""!&uD#/++

,nd##,X@@@@@@@rctt|j|fi||t||_|t||_|5t||_|jdkrtd|_dSdSdSr5)r@r2initrr7r8r9r)r$rBrCrDrEconnect_kwargsrFs      rrHzPooledDatabase.initrs(nd##(DD^DDD&$,_$=$=D!$"*="9"9D!)'!2!2D!Q&&%*5\\"""&&rFc|js(tt||St	j|jz}|t	jkrf	tt||}|S#t
$rt	jdYnwxYw|t	jkftd)Ng?z:Max connections exceeded, timed out attempting to connect.)r9r@r2connecttimersleep)r$
reuse_if_openexpiresretrFs    rrKzPooledDatabase.connect~s!	F..66}EEE)++ 22	##
ND1199-HH
*
 
 
 
3
 	##%&>??	?s$(BB/.B/ct		tj|j\}}}|}||}||r t
d|dx}}n|jrK||r6t
d||	|ddx}}n/n/#t$r!dx}}t
dYnwxYw||jr,t|j
|jkrtdtt |}t%j}||}t
d|t'||t%j|j
|<|S)NTzConnection %s was closed.z!Connection %s was stale, closing.z No connection available in pool.zExceeded maximum connections.zCreated new connection %s.)heapqheappopr<r?
_is_closedloggerdebugr8	_is_stale_close
IndexErrorr7lenr=rr@r2_connectrLr)r$ts_c_connconnkeyrFs      rr[zPooledDatabase._connects	
 %
d.? @ @
AvmmD))??4((LL!<cBBB $$B(	T^^B-?-?	
LL!DcJJJKKd+++ $$B-


  T?@@@

	<<$
N%%)>>>,-LMMM..7799DB--%%CLL5s;;;*2tTY[[AASs4C(C+*C+c@tj|z
|jkSr
)rLr8)r$rs  rrWzPooledDatabase._is_stales	i'4+>>>rcdS)NFrr$r_s  rrTzPooledDatabase._is_closedsurcdSr#rrcs  r
_can_reusezPooledDatabase._can_reusestrc||}|r*tt||dS||jvr|j|}|jr_||jrEt
d|tt||dS||rKt
d|tj
|j|jt|fdSt
d|dSdS)NzClosing stale connection %s.zReturning %s to pool.z
Closed %s.)r?r@r2rXr=popr8rWrrUrVrerRheappushr<r!)r$r_
close_connr`	pool_connrFs     rrXzPooledDatabase._closesBmmD!!	0.$''..t44444
DL
 
 ((--I"
0t~~i6I'J'J
0;SAAAnd++22488888&&
04c:::t0 ) 3Y[[$GIIIII\3/////!
 rc|rdS|}|j||d|||ddS)zS
        Close the underlying connection without returning it to the pool.
        FNTri)	is_closedrr=rgr?closerXrcs  rmanual_closezPooledDatabase.manual_closes{
>>	5  	
t,,d333

DT*****rc^|jD]\}}}||dg|_dSNTrl)r<rX)r$r]r_s   r
close_idlezPooledDatabase.close_idlesC+	/	/JAq$KKK....rXci}tj|z
}d}|jD]7\}}|j|kr"||jd|dz
}2|||<8||_|S)NrTrl)rLr=itemsrrXr)r$agein_usecutoffnr`rjs       rclose_stalezPooledDatabase.close_staless"
"l0022	(	(NC$v--I0TBBBQ'src||jD]\}}}||d|jD]}||jdg|_i|_dSrq)rnr<rXr=valuesr)r$r]r_rjs    r	close_allzPooledDatabase.close_alls	

+	/	/JAq$KKK....,,..	?	?IKK	,K>>>>r)r3NN)NNNF)rs)rrrrArHrKr0r[rWrTrerXrorrr{r~
__classcell__)rFs@rr2r2Ws}CGAAAAAA4BF
2
2
2
2
2
2
?
?
?
?
?
?))))V)V???
00000V0 ++V+$V


V
		V					rr2ceZdZdZdS)PooledMySQLDatabasecX|jddkrd}nd}	|j|dS#YdSxYw)NrrrFT)server_versionping)r$r_r*s   rrTzPooledMySQLDatabase._is_closedsLq!Q&&DDD	DIt5	44s
$)NrrrrTrrrrr
s#




rrceZdZdZdZdS)_PooledPostgresqlDatabasec|jrdS|}|tkrdS|tkr|dSNTF)closedget_transaction_statusrrrollbackr$r_
txn_statuss   rrTz$_PooledPostgresqlDatabase._is_closedsQ;	40022
3334
2
2
2MMOOOurc|}|tkrdS|tkr|n|tkr|dSNFT)rrrresetrrrs   rrez$_PooledPostgresqlDatabase._can_reuse's_0022
3335
5
5
5JJLLLL
2
2
2MMOOOtrNrrrrTrerrrrrs2			rrceZdZdS)PooledPostgresqlDatabaseNrrrrrr4Drr)PostgresqlExtDatabaseceZdZdS)PooledPostgresqlExtDatabaseNrrrrrr:rr)Psycopg3DatabaseceZdZdZdZdS)PooledPsycopg3Databasec|jrdS|jj}|tjkrdS|tjkr|dSr)rpgconntransaction_statusrUNKNOWNIDLErrs   rrTz!PooledPsycopg3Database._is_closedDsP{
t7J.666t0555

5rc|jj}|tjkrdS|tjkr|n$|tjkr|dSr)rrrrINERRORrrrrs   rrez!PooledPsycopg3Database._can_reuseOsa7J.666u0888

0555

4rNrrrrrrCs2											rrceZdZdZdS)_PooledSqliteDatabasec&	|jdS#YdSxYwr)
total_changesrcs  rrTz _PooledSqliteDatabase._is_closed`s'	5	44sNrrrrrr_s#rrceZdZdS)PooledSqliteDatabaseNrrrrrrhrrr)SqliteExtDatabaseceZdZdS)PooledSqliteExtDatabaseNrrrrrrnrrr)CSqliteExtDatabaseceZdZdS)PooledCSqliteExtDatabaseNrrrrrrvrrr)/__doc__r.rRloggingr:rLcollectionsr	itertoolsrpsycopg2.extensionsrrrImportError
psycopg.pqrpeeweer	r
r	getLoggerrUr
ValueErrorrrobjectr!r0r2rrrplayhouse.postgres_extrrplayhouse.psycopg3_extrrrrplayhouse.sqlite_extrrrrrrr<module>rs  B"""""".;;;;;;>>>>>>>>>>>>>...*...&&&&.	,,,,,,,			D	!     %%%%%%!!!!!!		=	)	)/....Z...,/>??
sssssVsssl.-2					8:L			'<<<<<<




&?AV



'''"&'"7777771A0"""!"N					0.			#666666




"79J



###"#$777777




#8:L




$$$#$si7AA	AAA&C<<DD
D  D*)D*E!!E+*E+/FFF
Back to Directory File Manager