Skip to content

Commit 1918b28

Browse files
committed
update
1 parent 0aa671a commit 1918b28

File tree

3 files changed

+19
-51
lines changed

3 files changed

+19
-51
lines changed

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name='talkops',
5-
version='1.1.0',
5+
version='1.1.1',
66
author='PicoUX',
77
description="TalkOps SDK",
88
long_description=open('README.md',encoding='utf-8').read(),
@@ -16,7 +16,7 @@
1616
'Issues': 'https://github.com/talkops/sdk-python/issues',
1717
'Source': 'https://github.com/talkops/sdk-python',
1818
},
19-
install_requires=['jinja2', 'requests', 'sseclient-py'],
19+
install_requires=['jinja2', 'requests', 'sseclient'],
2020
keywords=['sdk'],
2121
classifiers=[
2222
"Programming Language :: Python :: 3",

talkops/publisher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def stderr_wrapper(chunk):
2929
sys.stdout.write = stdout_wrapper
3030
sys.stderr.write = stderr_wrapper
3131
self._publish_data(json.dumps({'type': 'init'}))
32-
threading.Timer(0.1, self._publish_state).start()
32+
threading.Timer(0.2, self._publish_state).start()
3333

3434
def publish_state(self):
3535
event = {'type': 'state', 'state': self._use_state()}

talkops/subscriber.py

Lines changed: 16 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,31 @@
11
from importlib.resources import files
2+
from sseclient import SSEClient
23
from urllib.parse import quote
34
import asyncio
45
import json
5-
import os
6-
import re
76
import requests
8-
import sseclient
97
import sys
10-
import threading
118
import time
129

1310
class Subscriber:
1411
def __init__(self, use_config):
1512
self._use_config = use_config
16-
self._thread = None
17-
self._running = False
18-
self._start()
19-
20-
def _start(self):
21-
if self._thread is not None:
22-
return
23-
24-
self._running = True
25-
self._thread = threading.Thread(target=self._subscribe)
26-
self._thread.daemon = True
27-
self._thread.start()
28-
29-
def stop(self):
30-
if self._thread is None:
31-
return
32-
33-
self._running = False
34-
self._thread.join()
35-
self._thread = None
13+
self._subscribe()
3614

3715
def _subscribe(self):
38-
while self._running:
39-
try:
40-
config = self._use_config()
41-
mercure = config['mercure']
42-
response = requests.get(
43-
f"{mercure['url']}?topic={quote(mercure['subscriber']['topic'])}",
44-
headers={
45-
'Authorization': f"Bearer {mercure['subscriber']['token']}",
46-
},
47-
stream=True,
48-
)
49-
response.raise_for_status()
50-
51-
client = sseclient.SSEClient(response)
52-
for event in client.events():
53-
if not self._running:
54-
break
55-
self._on_event(json.loads(event.data))
56-
57-
except Exception as e:
58-
print(f"Error in subscriber: {e}", file=sys.stderr)
59-
if self._running:
60-
time.sleep(5)
16+
config = self._use_config()
17+
mercure = config['mercure']
18+
try:
19+
messages = SSEClient(
20+
f"{mercure['url']}?topic={quote(mercure['subscriber']['topic'])}",
21+
headers={
22+
'Authorization': f"Bearer {mercure['subscriber']['token']}",
23+
}
24+
)
25+
for message in messages:
26+
self._on_event(json.loads(message.data))
27+
except Exception as e:
28+
print(e)
6129

6230
def _on_event(self, event):
6331
config = self._use_config()
@@ -96,7 +64,7 @@ def _on_event(self, event):
9664
config['publisher'].publish_state()
9765
if not ready:
9866
return
99-
if event['type'] in self._get_event_types() and event['type'] in config['callbacks']:
67+
if event['type'] in config['callbacks']:
10068
callback = config['callbacks'][event['type']]
10169
arguments_list = [event['args'].get(name) for name in callback.__code__.co_varnames]
10270
output = callback(*arguments_list)

0 commit comments

Comments
 (0)