Skip to content

Commit 670047e

Browse files
committed
speed report
1 parent 4db13dd commit 670047e

File tree

1 file changed

+30
-15
lines changed

1 file changed

+30
-15
lines changed

src/reader/mysqlreader.py

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,30 @@ def __init__(
6969
resume_stream=self.resume_stream,
7070
)
7171

72+
def speed_report(self, start, rows_num, now=None):
73+
# time to calc stat
74+
if now is None:
75+
now = time.time()
76+
window_size = now - start
77+
rows_per_sec = rows_num / window_size
78+
logging.info(
79+
'rows_per_sec:%f for last %d rows %f sec',
80+
rows_per_sec,
81+
rows_num,
82+
window_size
83+
)
84+
7285
def read(self):
7386
start_timestamp = int(time.time())
7487
# fetch events
7588
try:
76-
prev_stat_time = time.time()
77-
rows_num = 0
78-
7989
while True:
8090
logging.debug('Check events in binlog stream')
91+
92+
start = time.time()
93+
rows_num = 0
94+
95+
# fetch available events from MySQL
8196
for mysql_event in self.binlog_stream:
8297
if isinstance(mysql_event, WriteRowsEvent):
8398
if self.subscribers('WriteRowsEvent'):
@@ -100,22 +115,22 @@ def read(self):
100115
event.table = mysql_event.table
101116
event.row = row['values']
102117
self.notify('WriteRowsEvent.EachRow', event=event)
118+
119+
if rows_num % 100000 == 0:
120+
# speed report each N rows
121+
self.speed_report(start, rows_num)
103122
else:
104123
# skip non-insert events
105124
pass
106125

107-
now = time.time()
108-
if now > prev_stat_time + 60:
109-
# time to calc stat
110-
window_size = now - prev_stat_time
111-
rows_per_sec = rows_num / window_size
112-
logging.info(
113-
'rows_per_sec:%f for last %f sec',
114-
rows_per_sec,
115-
window_size
116-
)
117-
prev_stat_time = now
118-
rows_num = 0
126+
# all events fetched (or none of them available)
127+
128+
if rows_num > 0:
129+
# we have some rows processed
130+
now = time.time()
131+
if now > start + 60:
132+
# and processing was long enough
133+
self.speed_report(start, rows_num, now)
119134

120135
if not self.blocking:
121136
break # while True

0 commit comments

Comments
 (0)