1
- from typing import Optional , Callable , Any
1
+ from typing import Optional , Callable
2
2
from psycopg2 import connect , extensions
3
- from multiprocessing import Process , Pipe , connection
3
+ from multiprocessing import Process , Pipe
4
4
import time
5
5
from select import select
6
6
7
+
7
8
POSTGRESQL_CHANNEL_NAME = "casbin_role_watcher"
8
9
9
10
@@ -13,12 +14,19 @@ def casbin_subscription(
13
14
user : str ,
14
15
password : str ,
15
16
port : Optional [int ] = 5432 ,
17
+ dbname : Optional [str ] = "postgres" ,
16
18
delay : Optional [int ] = 2 ,
17
19
channel_name : Optional [str ] = POSTGRESQL_CHANNEL_NAME ,
18
20
):
19
21
# delay connecting to postgresql (postgresql connection failure)
20
22
time .sleep (delay )
21
- conn = connect (host = host , port = port , user = user , password = password )
23
+ conn = connect (
24
+ host = host ,
25
+ port = port ,
26
+ user = user ,
27
+ password = password ,
28
+ dbname = dbname
29
+ )
22
30
# Can only receive notifications when not in transaction, set this for easier usage
23
31
conn .set_isolation_level (extensions .ISOLATION_LEVEL_AUTOCOMMIT )
24
32
curs = conn .cursor ()
@@ -41,6 +49,7 @@ def __init__(
41
49
user : str ,
42
50
password : str ,
43
51
port : Optional [int ] = 5432 ,
52
+ dbname : Optional [str ] = "postgres" ,
44
53
channel_name : Optional [str ] = POSTGRESQL_CHANNEL_NAME ,
45
54
start_process : Optional [bool ] = True ,
46
55
):
@@ -50,6 +59,7 @@ def __init__(
50
59
self .port = port
51
60
self .user = user
52
61
self .password = password
62
+ self .dbname = dbname
53
63
self .channel_name = channel_name
54
64
self .subscribed_process = self .create_subscriber_process (start_process )
55
65
@@ -69,6 +79,7 @@ def create_subscriber_process(
69
79
self .user ,
70
80
self .password ,
71
81
self .port ,
82
+ self .dbname ,
72
83
delay ,
73
84
self .channel_name ,
74
85
),
@@ -89,6 +100,7 @@ def update(self):
89
100
port = self .port ,
90
101
user = self .user ,
91
102
password = self .password ,
103
+ dbname = self .dbname ,
92
104
)
93
105
# Can only receive notifications when not in transaction, set this for easier usage
94
106
conn .set_isolation_level (extensions .ISOLATION_LEVEL_AUTOCOMMIT )
0 commit comments