from spider.task import * from loguru import logger logger.add("./log/logging.log", rotation="50 MB") TASK_TYPE = { 'get_account_profile': playwright_get_user_profile, 'update_account_profile': playwright_set_user_profile, 'check_account_cookies': playwright_check_account_cookies, 'comment': playwright_comment, 'like': playwright_like, 'post': playwright_post, 'login_account': playwright_m_login, 'forward': playwright_share } HOST = "http://118.193.40.152:8002" def get_task(): if lock._block.locked(): return url = f'{HOST}/queue/get-data' header = { 'Content-Type': 'application/json' } data = { "include_task_type": [], "exclude_task_type": [] } response = requests.post(url, headers=header, json=data, proxies=None) if response.status_code == 200: result = response.json() return result def task_callback(tid, data, status='success', msg='success'): body = { 'id': tid, 'status': status, 'data': data, 'message': msg, } logger.info(f"回调任务: tid:{tid}, status:{status}, data:{data}, msg:{msg}") response = requests.post( f'{HOST}/queue/handle-data', json=body, proxies=None ) result = response.json() if response.status_code != 200: raise RuntimeError(f"任务回调失败:code={response.status_code} text={result.text}") def execute_task(tid, task_type, **kwargs): try: result = TASK_TYPE.get(task_type)(**kwargs) task_callback(tid, data=result) except (AuthException, OperationFailed) as e: logger.exception("账号或操作异常") task_callback(tid, data={}, status=e.error_type, msg=str(e)) except Exception as e: logger.exception("未捕获异常") task_callback(tid, data={}, status='failed', msg=str(e)) def main(): while True: try: task = get_task() if task is None: logger.info("无任务") time.sleep(10) continue logger.info(f"收到任务{task}") task['data']['tid'] = task['id'] task['data']['task_type'] = task['task_type'] execute_task(**task['data']) except Exception as e: logger.error(f'Main Error: {e}') time.sleep(10) if __name__ == '__main__': main()