yzk_wechat_event/apps/jqr/pubsub.py

89 lines
2.7 KiB
Python
Raw Normal View History

2023-12-25 11:06:08 +08:00
import json
import logging
import os
import time
from django_redis import get_redis_connection
from django.conf import settings
from threading import Thread
from yzk_wechat_event.settings.constant import Constant
from django.utils.module_loading import import_string
logger = logging.getLogger('apps')
class JQREventCallbackPubSub:
2023-12-26 10:16:56 +08:00
rc = get_redis_connection('pubsub')
2023-12-25 11:06:08 +08:00
@classmethod
def publish(cls, data):
cls.rc.lpush(Constant.JQR_EVENT_CALLBACK_PUBSUB_CHANNEL, json.dumps(data))
@classmethod
def event_callback_listener(cls):
while True:
data = cls.rc.brpop(Constant.JQR_EVENT_CALLBACK_PUBSUB_CHANNEL, 5)
if data is None:
time.sleep(5)
continue
data = json.loads(data[1])
callback_data = json.loads(data['data'])
corpinfo = data['corpinfo']
handler = data['handler']
handler = import_string(handler)
handler(callback_data, corpinfo)
2023-12-26 10:05:06 +08:00
class JQREventNewUserCallbackPubSub:
2023-12-26 10:16:56 +08:00
rc = get_redis_connection('pubsub')
2023-12-26 10:05:06 +08:00
@classmethod
def publish(cls, data):
cls.rc.lpush(Constant.JQR_EVENT_NEW_USER_CALLBACK_PUBSUB_CHANNEL, json.dumps(data))
@classmethod
def event_callback_listener(cls):
while True:
data = cls.rc.brpop(Constant.JQR_EVENT_NEW_USER_CALLBACK_PUBSUB_CHANNEL, 5)
if data is None:
time.sleep(5)
continue
data = json.loads(data[1])
callback_data = json.loads(data['data'])
corpinfo = data['corpinfo']
handler = data['handler']
handler = import_string(handler)
handler(callback_data, corpinfo)
2023-12-25 11:06:08 +08:00
class JQRQrcodeCallbackPubSub:
2023-12-26 10:16:56 +08:00
rc = get_redis_connection('pubsub')
2023-12-25 11:06:08 +08:00
@classmethod
def publish(cls, data):
cls.rc.lpush(Constant.JQR_QRCODE_PUBSUB_CHANNEL, json.dumps(data))
@classmethod
def qrcode_callback_listener(cls):
while True:
data = cls.rc.brpop(Constant.JQR_QRCODE_PUBSUB_CHANNEL, 5)
if data is None:
time.sleep(5)
continue
data = json.loads(data[1])
qrcodeid = data['qrcodeid']
userid = data['userid']
externaluserid = data['externaluserid']
corpinfo = data['corpinfo']
handler = data['handler']
handler = import_string(handler)
handler(qrcodeid, userid, externaluserid, corpinfo)
2023-12-25 14:35:54 +08:00
if not settings.DEBUG:
2023-12-26 10:05:06 +08:00
t = Thread(target=JQREventNewUserCallbackPubSub.event_callback_listener)
2023-12-25 14:35:54 +08:00
t.start()
t2 = Thread(target=JQRQrcodeCallbackPubSub.qrcode_callback_listener)
t2.start()