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):
|
2023-12-26 17:25:04 +08:00
|
|
|
logger.info('event new user callback listener start')
|
2023-12-26 10:05:06 +08:00
|
|
|
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])
|
2023-12-26 17:07:44 +08:00
|
|
|
logger.info(f'new user event callback: {data}')
|
2023-12-26 10:05:06 +08:00
|
|
|
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])
|
2023-12-26 17:07:44 +08:00
|
|
|
logger.info(f'qrcode event callback: {data}')
|
2023-12-25 11:06:08 +08:00
|
|
|
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-26 17:27:29 +08:00
|
|
|
# if not settings.DEBUG:
|
|
|
|
# t = Thread(target=JQREventNewUserCallbackPubSub.event_callback_listener)
|
|
|
|
# t.start()
|
2023-12-26 17:20:34 +08:00
|
|
|
# t2 = Thread(target=JQRQrcodeCallbackPubSub.qrcode_callback_listener)
|
|
|
|
# t2.start()
|