Dispatch push notifications using greenlets.

pull/38/head
Snakes 2022-12-02 18:15:41 -05:00
parent 7a37f9f865
commit 9b09181e28
Signed by: Snakes
GPG Key ID: E745A82778055C7E
1 changed files with 19 additions and 13 deletions

View File

@ -1,6 +1,7 @@
import json
from sys import stdout
import gevent
from flask import g
from pywebpush import webpush
@ -114,16 +115,21 @@ def push_notif(uid, title, body, url):
subscriptions = g.db.query(PushSubscription).filter_by(user_id=uid).all()
for subscription in subscriptions:
try:
response = webpush(
subscription_info=json.loads(subscription.subscription_json),
data=json.dumps({
"title": title,
"body": body,
'url': url,
'icon': f'{SITE_FULL}/icon.webp?v=1',
}),
vapid_private_key=VAPID_PRIVATE_KEY,
vapid_claims={"sub": f"mailto:{EMAIL}"}
)
except: continue
gevent.spawn(_push_notif_thread,
subscription.subscription_json, title, body, url)
def _push_notif_thread(sub_json, title, body, url):
try:
response = webpush(
subscription_info=json.loads(sub_json),
data=json.dumps({
"title": title,
"body": body,
'url': url,
'icon': f'{SITE_FULL}/icon.webp?v=1',
}),
vapid_private_key=VAPID_PRIVATE_KEY,
vapid_claims={"sub": f"mailto:{EMAIL}"}
)
except: pass