resq/utils/apns_sender/apns_sender.py

65 lines
1.6 KiB
Python

from threading import Thread
from daemonize import Daemonize
from apns import APNs, Payload
import redis
import time
import signal
import sys
import os
import logging
def sigint_handler(signal, frame):
sys.exit(0)
os._exit(0)
def redisLoop(apns, logger):
r = redis.StrictRedis(host='localhost', port=6379, db=0)
while 1:
time.sleep(0)
data = r.brpop("apns_push", 10)
if data:
info = data[1].split('|')
logger.info("Token: " + info[0] + " message: " + info[1])
send_notif(apns, info[0], info[1])
def sigint_handler(signal, frame):
sys.exit(0)
def send_notif(apns, token_hex, message):
#token_hex = '602E96BF9BC15D7913871D4D90FEBD7E265500C9D22DCEC5A4AFA3FC36EBE4DC'
payload = Payload(alert=message, sound="default", badge=1)
apns.gateway_server.send_notification(token_hex, payload)
def get_logger():
logger = logging.getLogger("apns_logger")
logger.setLevel(logging.INFO)
fh = logging.FileHandler("/tmp/apns_sender.log")
fmt = '%(asctime)s - %(threadName)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(fmt)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
def main():
logger = get_logger()
logger.info("Starting apns_sender")
cert_file = "/root/ios_push_test/ios_prod.pem"
apns = APNs(use_sandbox=False, cert_file=cert_file)
logger.info("Starting redis loop")
redisLoop(apns, logger)
signal.signal(signal.SIGINT, sigint_handler)
pid = "/tmp/apns_sender.pid"
daemon = Daemonize(app="apns_sender", pid=pid, action=main)
daemon.start()
#main()