最好的偷懒方式就是一遍做好!

  • import socketio
    
    class ExportResourceClient:
    
        def __init__(self, server_url):
            self.server_url = server_url
            self.sio = socketio.Client()
            # 用于判断当前任务是否完成
            self.current_task_done = False
            self._register_events()
    
        def _register_events(self):
            """注册事件回调函数"""
    
            @self.sio.event
            def connect():
                log.info("SocketIO连接成功")
    
            @self.sio.event
            def export_start(data):
                log.info("开始导出...")
    
            @self.sio.event
            def export_progress(data):
                log.info(f"进度: {data['msg']}")
    
            @self.sio.event
            def export_error(data):
                log.info(f"导出失败: {data['msg']}")
                self.current_task_done = True  # 标记任务完成,避免卡住
    
            @self.sio.event
            def export_info(data):
                log.info(f"信息: {data['msg']}")
    
            @self.sio.event
            def export_success(data):
                log.info(f"导出成功: {data['msg']}")
                log.info(f"下载地址: {data['url']}")
                self.current_task_done = True  # 标记任务完成
    
            @self.sio.event
            def task_status(data):
                print(f"任务状态: {'运行中' if data['is_running'] else '已完成'}")
    
        def connect(self):
            """连接到WebSocket服务器"""
            self.sio.connect(self.server_url)
    
        def send_task(self, task_name):
            """发送任务事件"""
            self.current_task_done = False  # 任务开始时重置状态
            self.sio.emit(task_name)
            log.info(f"任务 {task_name} 已发送")
    
        def wait_for_task_completion(self):
            """等待当前任务完成"""
            log.info("等待任务完成...")
            while not self.current_task_done:
                time.sleep(1)
    
        def start_export_kr_resource(self):
            log.step("start export kr resource event_name:start_export_kr_resource")
            self.send_task("start_export_kr_resource")
            self.wait_for_task_completion()
    
        def start_export_kr_img_resource(self):
            log.step("start export img resource event_name:start_export_kr_img_resource")
            self.send_task("start_export_kr_img_resource")
            self.wait_for_task_completion()
    
        def start_export_translation_pack(self):
            log.step("start export translation pack event_name:start_export_translation_pack")
            self.send_task("start_export_translation_pack")
            self.wait_for_task_completion()
    
        def wait_for_events(self):
            """保持WebSocket连接,等待事件"""
            self.sio.wait()
    
  • 开发可以支配测试吗

  • 羽毛球无敌

  • AES 加密时会约定在前面加上 16 个随机的字节,服务解密的时候会先去掉 16 个随机字节,然后解密。因为每次都有会随机字节,所以加密的结果不同,但解密的结果是相同的。

  • 线上上线是如何操作的?不会也是手动部署?应该都是 jenkins + salt 部署?线上部署那一套在测试服部署一下就 OK。客户端包可以直接部署一个 Nginx,让前端同学开发完之后直接放到 nginx 配置对应的目录,然后在通知群发提测通知带上对应的链接就可以了。

  • 没有灰度吗? 灰度完之后看下崩溃率,崩溃率高了就让研发排查修复,继续灰度,崩溃率达标在上线。

  • 这就有点害怕了😂

  • 我们上个月又刚裁了一波

  • 😂

  • 感觉不是。自动化也是需要人来编写的;

最好的偷懒方式就是一遍做好!