8000 implement exception rule · haje01/fluent-logger-python@c371678 · GitHub
[go: up one dir, main page]

Skip to content

Commit c371678

Browse files
committed
implement exception rule
1 parent d2e81cd commit c371678

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

fluent/sender.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77

88
import msgpack
99

10+
SEND_FAIL_SEC = 3
11+
MAX_SEND_FAIL = 30
12+
1013

1114
_global_sender = None
1215

@@ -41,6 +44,8 @@ def __init__(self,
4144

4245
self.socket = None
4346
self.pendings = None
47+
self.last_send_fail = None
48+
self.send_fail_cnt = 0
4449
self.lock = threading.Lock()
4550

4651
try:
@@ -89,16 +94,25 @@ def _send_internal(self, bytes_):
8994

9095
# send finished
9196
self.pendings = None
97+
self.last_send_fail = None
98+
self.send_fail_cnt = 0
9299
except Exception:
93100
# close socket
94101
self._close()
102+
self.send_fail_cnt += 1
95103
# clear buffer if it exceeds max bufer size
96-
if self.pendings and (len(self.pendings) > self.bufmax):
104+
if self.send_fail_cnt > MAX_SEND_FAIL:
105+
raise
106+
if self.last_send_fail and time.time() - self.last_send_fail > SEND_FAIL_SEC:
107+
raise
108+
elif self.pendings and (len(self.pendings) > self.bufmax):
97109
# TODO: add callback handler here
98110
self.pendings = None
99111
raise
100112
else:
101113
self.pendings = bytes_
114+
if self.last_send_fail is None:
115+
self.last_send_fail = time.time()
102116

103117
def _reconnect(self):
104118
if not self.socket:

0 commit comments

Comments
 (0)
0