mirror of
https://github.com/ansible/awx.git
synced 2026-01-15 11:50:42 -03:30
Wait for Slack RTM API websocket connection to be established
This commit is contained in:
parent
fa9c6287f7
commit
aa469d730e
@ -1,6 +1,7 @@
|
||||
# Copyright (c) 2016 Ansible, Inc.
|
||||
# All Rights Reserved.
|
||||
|
||||
import time
|
||||
import logging
|
||||
from slackclient import SlackClient
|
||||
|
||||
@ -9,6 +10,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||
from awx.main.notifications.base import AWXBaseEmailBackend
|
||||
|
||||
logger = logging.getLogger('awx.main.notifications.slack_backend')
|
||||
WEBSOCKET_TIMEOUT = 30
|
||||
|
||||
|
||||
class SlackBackend(AWXBaseEmailBackend):
|
||||
@ -30,7 +32,18 @@ class SlackBackend(AWXBaseEmailBackend):
|
||||
if not self.connection.rtm_connect():
|
||||
if not self.fail_silently:
|
||||
raise Exception("Slack Notification Token is invalid")
|
||||
return True
|
||||
|
||||
start = time.time()
|
||||
time.clock()
|
||||
elapsed = 0
|
||||
while elapsed < WEBSOCKET_TIMEOUT:
|
||||
events = self.connection.rtm_read()
|
||||
if any(event['type'] == 'hello' for event in events):
|
||||
return True
|
||||
elapsed = time.time() - start
|
||||
time.sleep(0.5)
|
||||
|
||||
raise RuntimeError("Slack Notification unable to establish websocket connection after {} seconds".format(WEBSOCKET_TIMEOUT))
|
||||
|
||||
def close(self):
|
||||
if self.connection is None:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user