-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonitor.py
More file actions
71 lines (53 loc) · 1.79 KB
/
Copy pathmonitor.py
File metadata and controls
71 lines (53 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
import pymongo
from pymongo import WriteConcern
from pymongo.read_concern import ReadConcern
import time
import settings
import sys
def main():
# Define the MongoDB Connection
conn=pymongo.MongoClient(settings.URI)
use_txns = True if ((len(sys.argv) > 1) and (sys.argv[1].strip().lower() == 'txns')) else False
if use_txns:
print("Transactions set to TRUE")
else:
print("Transactions set to FALSE (provide comand line arg 'txns' to use transactions)")
db = conn["banking_txns"]
collection = db["accounts"]
coll_a = db["accts_a"]
coll_b = db["accts_b"]
coll_c = db["accts_c"]
coll_d = db["accts_d"]
colls_list = [ coll_a, coll_b, coll_c, coll_d ]
while True:
total_balance = 0
if use_txns:
balances_list = get_balances_in_txn(conn, colls_list)
else:
balances_list = get_balances(colls_list)
#print(balances_list)
print("Total of Bals: " + str(sum(balances_list)))
time.sleep(0.05)
def get_balances(colls_list):
balances_list = []
for coll in colls_list:
cursor = coll.find({})
for acct in cursor:
balances_list.append(acct['balance'])
return balances_list
def get_balances_in_txn(conn, colls_list):
balances_list = []
session = conn.start_session()
session.start_transaction(read_concern=ReadConcern('snapshot'))
for coll in colls_list:
cursor = coll.find({},session=session)
for acct in cursor:
balances_list.append(acct['balance'])
session.commit_transaction()
return balances_list
if __name__ == "__main__":
try:
main()
except pymongo.errors.ConnectionFailure as e:
print("Could not connect to MongoDB: %s" % e)