瀏覽代碼

登录调整

develop
H Vs 2 月之前
父節點
當前提交
888e53fcb2
共有 3 個文件被更改,包括 43 次插入7 次删除
  1. +1
    -1
      resources/messages_resource.py
  2. +11
    -6
      wechat/biz.py
  3. +31
    -0
      wechat/gewe_chat.py

+ 1
- 1
resources/messages_resource.py 查看文件

@@ -873,6 +873,6 @@ def check_chatroom(userName):

def remove_markdown_symbol(text: str):
# 移除markdown格式,目前先移除**
if not text:
if not text or not isinstance(text, str):
return text
return re.sub(r'\*\*(.*?)\*\*', r'\1', text)

+ 11
- 6
wechat/biz.py 查看文件

@@ -300,7 +300,7 @@ def login_or_reconnect(wxchat:gewe_chat.GeWeChatCom, token_id, app_id, region_id
uuid = qr_code.get('uuid')
if not uuid:
logger.error(f"uuid获取二维码失败: {qr_code}")
redis_helper.redis_helper.release_lock(f"__AI_OPS_WX__:LOGINLOCK:{token_id}")
wxchat.release_login_lock(token_id)
break


@@ -341,7 +341,7 @@ def login_or_reconnect(wxchat:gewe_chat.GeWeChatCom, token_id, app_id, region_id
# login_info.update({"login_time":datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]})
cleaned_login_info = {k: (v if v is not None else '') for k, v in login_info.items()}
redis_helper.redis_helper.set_hash(hash_key, cleaned_login_info)
redis_helper.redis_helper.release_lock(f"__AI_OPS_WX__:LOGINLOCK:{token_id}")
wxchat.release_login_lock(token_id)
return login_info
else:
logger.info(f"登录检查中: {ret}-{msg}-{res}")
@@ -349,7 +349,7 @@ def login_or_reconnect(wxchat:gewe_chat.GeWeChatCom, token_id, app_id, region_id
time.sleep(5)
logger.error(f"登录失败,二维码生成 {max_retries} 次")
redis_helper.redis_helper.release_lock(f"__AI_OPS_WX__:LOGINLOCK:{token_id}")
wxchat.release_login_lock(token_id)

def fetch_and_save_contacts(wxchat:gewe_chat.GeWeChatCom, token_id, app_id, hash_key):
"""
@@ -420,14 +420,19 @@ def ops_messages_process(message):
tel=content_data.get('tel', '18029274615')
token_id=content_data.get('token_id', 'f828cb3c-1039-489f-b9ae-7494d1778a15')
region_id=content_data.get('region_id', '440000')
#wx_login(wxchat,tel,token_id)
flag=redis_helper.redis_helper.acquire_lock(f"__AI_OPS_WX__:LOGINLOCK:{token_id}", expire_time=800, timeout=830)
loginfo=redis_helper.redis_helper.get_hash(f"__AI_OPS_WX__:LOGININFO:{tel}")
status=loginfo.get('status',0)
if status==1:
logger.info(f'手机号{tel},wx_token{token_id} 已经登录')
return

flag=gewe_chat.wxchat.acquire_login_lock(token_id,800)
if flag:
thread = threading.Thread(target=wx_login, args=(wxchat,tel,token_id,region_id))
thread.daemon = True
thread.start()
else:
logger.info(f'登录进行中,获取锁失败 {token_id}')
logger.info(f'手机号{tel}, wx_token{token_id} 登录进行中,稍后再试')
elif msg_type_data == 'group-sending':
agent_tel=content_data.get('agent_tel', '18029274615')
# 使用线程处理


+ 31
- 0
wechat/gewe_chat.py 查看文件

@@ -6,6 +6,7 @@ import json
import os
import threading
import time
import uuid
import requests

from io import BytesIO
@@ -907,6 +908,36 @@ class GeWeChatCom:
r=redis_helper.redis_helper.get_hash_field(hash_key,"data")
return r

# def get_login_lock_from_cache(self,token_id)->bool:
# hash_key = f"__AI_OPS_WX__:LOGINLOCK:{token_id}"
# cache = redis_helper.redis_helper.get_hash_field(hash_key,"data")
# if cache:
# return True
# else:
# return False
# def save_login_lock_to_cache(self,token_id,expire_time:int):
# hash_key = f"__AI_OPS_WX__:LOGINLOCK:{token_id}"
# redis_helper.redis_helper.set_hash(hash_key,{"data":str(uuid.uuid4())},expire_time)

# def delete_login_lock_from_cache(self,token_id):
# hash_key = f"__AI_OPS_WX__:LOGINLOCK:{token_id}"
# redis_helper.redis_helper.delete_hash_field(hash_key,"data")


def acquire_login_lock(self, token_id, expire_time=10):
hash_key = f"__AI_OPS_WX__:LOGINLOCK:{token_id}"
identifier=str(uuid.uuid4())
if redis_helper.redis_helper.client.setnx(hash_key, identifier):
redis_helper.redis_helper.client.expire(hash_key, expire_time)
return True
return False

def release_login_lock(self, token_id):
hash_key = f"__AI_OPS_WX__:LOGINLOCK:{token_id}"
redis_helper.redis_helper.client.delete(hash_key)


def start():
global wxchat
# base_url = "http://192.168.88.11:2531"


Loading…
取消
儲存