97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
|
|
import redis
|
|||
|
|
from loguru import logger
|
|||
|
|
|
|||
|
|
|
|||
|
|
class RedisClient:
|
|||
|
|
def __init__(self, host: str = 'localhost', port: int = 6379, password: str = None):
|
|||
|
|
self.host = host
|
|||
|
|
self.port = port
|
|||
|
|
self.password = password
|
|||
|
|
self.browser_client = None
|
|||
|
|
self.task_client = None
|
|||
|
|
self.cache_client = None
|
|||
|
|
self.ok_client = None
|
|||
|
|
self.init()
|
|||
|
|
|
|||
|
|
# 初始化
|
|||
|
|
def init(self):
|
|||
|
|
"""
|
|||
|
|
初始化Redis客户端
|
|||
|
|
:return:
|
|||
|
|
"""
|
|||
|
|
if self.browser_client is None:
|
|||
|
|
self.browser_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=0,
|
|||
|
|
decode_responses=True)
|
|||
|
|
|
|||
|
|
if self.task_client is None:
|
|||
|
|
self.task_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=1,
|
|||
|
|
decode_responses=True)
|
|||
|
|
|
|||
|
|
if self.cache_client is None:
|
|||
|
|
self.cache_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=2,
|
|||
|
|
decode_responses=True)
|
|||
|
|
|
|||
|
|
if self.ok_client is None:
|
|||
|
|
self.ok_client = redis.Redis(host=self.host, port=self.port, password=self.password, db=3,
|
|||
|
|
decode_responses=True)
|
|||
|
|
|
|||
|
|
logger.info("Redis连接已初始化")
|
|||
|
|
|
|||
|
|
# 关闭连接
|
|||
|
|
def close(self):
|
|||
|
|
self.browser_client.close()
|
|||
|
|
self.task_client.close()
|
|||
|
|
self.cache_client.close()
|
|||
|
|
self.ok_client.close()
|
|||
|
|
logger.info("Redis连接已关闭")
|
|||
|
|
|
|||
|
|
"""browser_client"""
|
|||
|
|
|
|||
|
|
# 写入浏览器信息
|
|||
|
|
async def set_browser(self, browser_id: str, data: dict):
|
|||
|
|
try:
|
|||
|
|
# 处理None值,将其转换为空字符串
|
|||
|
|
processed_data = {}
|
|||
|
|
for key, value in data.items():
|
|||
|
|
if value is None:
|
|||
|
|
processed_data[key] = ""
|
|||
|
|
else:
|
|||
|
|
processed_data[key] = value
|
|||
|
|
|
|||
|
|
self.browser_client.hset(browser_id, mapping=processed_data)
|
|||
|
|
logger.info(f"写入浏览器信息: {browser_id} - {processed_data}")
|
|||
|
|
return True
|
|||
|
|
except Exception as e:
|
|||
|
|
logger.error(f"写入浏览器信息失败: {browser_id} - {e}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
# 获取浏览器信息
|
|||
|
|
async def get_browser(self, browser_id: str = None):
|
|||
|
|
try:
|
|||
|
|
if browser_id is None:
|
|||
|
|
# 获取全部数据
|
|||
|
|
data = self.browser_client.hgetall()
|
|||
|
|
else:
|
|||
|
|
data = self.browser_client.hgetall(browser_id)
|
|||
|
|
logger.info(f"获取浏览器信息: {browser_id} - {data}")
|
|||
|
|
return data
|
|||
|
|
except Exception as e:
|
|||
|
|
logger.error(f"获取浏览器信息失败: {browser_id} - {e}")
|
|||
|
|
|
|||
|
|
|
|||
|
|
async def main():
|
|||
|
|
host = '183.66.27.14'
|
|||
|
|
port = 50086
|
|||
|
|
password = 'redis_AdJsBP'
|
|||
|
|
redis_client = RedisClient(host, port, password)
|
|||
|
|
# await redis_client.set_browser('9eac7f95ca2d47359ace4083a566e119', {'status': 'online', 'current_task_id': None})
|
|||
|
|
await redis_client.get_browser('9eac7f95ca2d47359ace4083a566e119')
|
|||
|
|
# 关闭连接
|
|||
|
|
redis_client.close()
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
import asyncio
|
|||
|
|
|
|||
|
|
asyncio.run(main())
|