Skip to content

Commit 47d9523

Browse files
committed
Use btubbs sseclient.
1 parent d6ba1e0 commit 47d9523

File tree

1 file changed

+27
-42
lines changed

1 file changed

+27
-42
lines changed

lib/stackstorm_api.py

Lines changed: 27 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -164,59 +164,44 @@ def listener(callback=None, bot_identity=None):
164164
)
165165
return
166166

167-
headers = token.requests()
168-
# WARNING: Sensitive security information will be logged, uncomment only when necessary.
169-
# LOG.debug("Authentication headers {}".format(headers))
170-
171-
headers.update({'Accept': 'text/event-stream'})
172-
with requests.Session() as session:
173-
response = session.get(
174-
"".join([self.cfg.stream_url, "/stream"]),
175-
headers=headers,
176-
stream=True,
177-
verify=self.cfg.verify_cert
178-
)
179-
if response.raise_for_status():
180-
raise HTTPError("HTTP Error {} ({})".format(
181-
response.reason,
182-
response.status_code
183-
))
184-
try:
185-
client = sseclient.SSEClient(response)
186-
for event in client.events():
187-
data = json.loads(event.data)
188-
if event.event in ["st2.announcement__errbot"]:
189-
LOG.debug(
190-
"*** Errbot announcement event detected! ***\n{}\n".format(event)
191-
)
192-
p = data["payload"]
193-
callback(
194-
p.get('whisper'),
195-
p.get('message'),
196-
p.get('user'),
197-
p.get('channel'),
198-
p.get('extra')
167+
stream_kwargs = {
168+
"headers": token.requests(),
169+
"verify": self.cfg.verify_cert
170+
}
171+
172+
stream_url = "".join([self.cfg.stream_url, "/stream"])
173+
try:
174+
stream = sseclient.SSEClient(stream_url, **stream_kwargs)
175+
for event in stream:
176+
if event.event in ["st2.announcement__errbot"]:
177+
LOG.debug(
178+
"*** Errbot announcement event detected! ***\n{}\n{}\n".format(
179+
event.dump(),
180+
stream
199181
)
200-
except Exception as e:
201-
raise e
202-
finally:
203-
if client:
204-
client.close()
182+
)
183+
data = json.loads(event.data)
184+
p = data["payload"]
185+
callback(
186+
p.get('whisper'),
187+
p.get('message'),
188+
p.get('user'),
189+
p.get('channel'),
190+
p.get('extra')
191+
)
192+
except Exception as e:
193+
raise e
205194

206195
StackStormAPI.stream_backoff = 10
207196
while True:
208197
try:
198+
self.refresh_bot_credentials()
209199
listener(callback, bot_identity)
210200
except Exception as err:
211201
LOG.critical(
212202
"St2 stream listener - An error occurred: {} {}. "
213203
"Backing off {} seconds.".format(type(err), err, StackStormAPI.stream_backoff)
214204
)
215205
traceback.print_exc()
216-
try:
217-
self.refresh_bot_credentials()
218-
except Exception as e:
219-
LOG.critical("Error refreshing credentials {}".format(e))
220-
traceback.print_exc()
221206

222207
time.sleep(StackStormAPI.stream_backoff)

0 commit comments

Comments
 (0)