Dispatch push notifications using greenlets.
parent
7a37f9f865
commit
9b09181e28
|
@ -1,6 +1,7 @@
|
||||||
import json
|
import json
|
||||||
from sys import stdout
|
from sys import stdout
|
||||||
|
|
||||||
|
import gevent
|
||||||
from flask import g
|
from flask import g
|
||||||
from pywebpush import webpush
|
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()
|
subscriptions = g.db.query(PushSubscription).filter_by(user_id=uid).all()
|
||||||
for subscription in subscriptions:
|
for subscription in subscriptions:
|
||||||
try:
|
gevent.spawn(_push_notif_thread,
|
||||||
response = webpush(
|
subscription.subscription_json, title, body, url)
|
||||||
subscription_info=json.loads(subscription.subscription_json),
|
|
||||||
data=json.dumps({
|
|
||||||
"title": title,
|
def _push_notif_thread(sub_json, title, body, url):
|
||||||
"body": body,
|
try:
|
||||||
'url': url,
|
response = webpush(
|
||||||
'icon': f'{SITE_FULL}/icon.webp?v=1',
|
subscription_info=json.loads(sub_json),
|
||||||
}),
|
data=json.dumps({
|
||||||
vapid_private_key=VAPID_PRIVATE_KEY,
|
"title": title,
|
||||||
vapid_claims={"sub": f"mailto:{EMAIL}"}
|
"body": body,
|
||||||
)
|
'url': url,
|
||||||
except: continue
|
'icon': f'{SITE_FULL}/icon.webp?v=1',
|
||||||
|
}),
|
||||||
|
vapid_private_key=VAPID_PRIVATE_KEY,
|
||||||
|
vapid_claims={"sub": f"mailto:{EMAIL}"}
|
||||||
|
)
|
||||||
|
except: pass
|
||||||
|
|
Loading…
Reference in New Issue