28
28
class QueueListener (object ):
29
29
_sentinel_item = None
30
30
31
- def __init__ (self , queue , * handlers ):
31
+ def __init__ (self , queue , queue_get_timeout , * handlers ):
32
32
self .queue = queue
33
+ self .queue_get_timeout = queue_get_timeout
33
34
self .handlers = handlers
34
35
self ._stop_nowait = threading .Event ()
35
36
self ._stop = threading .Event ()
36
37
self ._thread = None
37
38
38
- def dequeue (self , block = True ):
39
+ def dequeue (self , block = True , timeout = None ):
39
40
"""Dequeue a record and return item."""
40
- return self .queue .get (block )
41
+ return self .queue .get (block , timeout )
41
42
42
43
def start (self ):
43
44
"""Start the listener.
@@ -82,7 +83,7 @@ def _monitor(self):
82
83
has_task_done = hasattr (q , 'task_done' )
83
84
while not self ._stop .isSet ():
84
85
try :
85
- record = self .dequeue (True )
86
+ record = self .dequeue (True , self . queue_get_timeout )
86
87
if record is self ._sentinel_item :
87
88
break
88
89
self .handle (record )
@@ -133,7 +134,7 @@ class ReportPortalServiceAsync(object):
133
134
def __init__ (self , endpoint , project , token , api_base = "api/v1" ,
134
135
error_handler = None , log_batch_size = 20 ,
135
136
is_skipped_an_issue = True ,
136
- verify_ssl = True ):
137
+ verify_ssl = True , queue_get_timeout = 5 ):
137
138
"""Init the service class.
138
139
139
140
Args:
@@ -160,7 +161,8 @@ def __init__(self, endpoint, project, token, api_base="api/v1",
160
161
"start_test_item" , "finish_test_item" , "log" ]
161
162
162
163
self .queue = queue .Queue ()
163
- self .listener = QueueListener (self .queue , self .process_item )
164
+ self .listener = QueueListener (self .queue , queue_get_timeout ,
165
+ self .process_item )
164
166
self .listener .start ()
165
167
self .lock = threading .Lock ()
166
168
0 commit comments