InfoQServerless 架构下如何实现日志的实时输出?( 四 )
retmsg = {}retmsg['errNo'] =0retmsg['errMsg'] ="ok"retmsg['websocket'] = {"action":"connecting","secConnectionID": connectionID}if"secWebSocketProtocol"inevent['websocket'].keys:retmsg['websocket']['secWebSocketProtocol'] = event['websocket']if"secWebSocketExtensions"inevent['websocket'].keys:ext = event['websocket']['secWebSocketExtensions']retext = exts = ext.split(";")print(exts)foreinexts:e = e.strip(" ")ife =="permessage-deflate":ife =="client_max_window_bits":passretmsg['websocket']['secWebSocketExtensions'] =";".join(retext)print("connecting: connection id:%s"% event['websocket']['secConnectionID'])上报函数:用户开启实时日志成功之后 , 业务函数上报数据 。 body = json.loads(event["body"])url = os.environ.get("url")retmsg = {}retmsg['websocket'] = {}retmsg['websocket']['action'] ="data send"retmsg['websocket']['secConnectionID'] = body["coid"]retmsg['websocket']['dataType'] ='text'retmsg['websocket']['data'] = body["data"]print(retmsg)requests.post(url, json=retmsg)returnTrue清理函数:客户端关闭链接时触发的函数 , 部分操作是注册函数的逆操作 。 importjson, osimportrequeststry:"Value":"close"params = json.dumps({"FunctionName": name,"Namespace": namespace,"ShowCode":"FALSE"})continueprint(environmentVariablesList)req = models.UpdateFunctionConfigurationRequestparams = json.dumps({"FunctionName": name,},"Namespace": namespace})resp = client.UpdateFunctionConfiguration(req)print(resp.to_json_string)returnTrueprint(e)returnFalseregion = os.environ.get("bucket_region")secreetId = os.environ.get("TENCENTCLOUD_SECRETID")secretKey = os.environ.get("TENCENTCLOUD_SECRETKEY")token = os.environ.get("TENCENTCLOUD_SESSIONTOKEN")config = CosConfig(Region=region, SecretId=secreetId, SecretKey=secretKey, Token=token)client = CosS3Client(config)response = client.get_object(Key=connectionID,)response['Body'].get_stream_to_file('/tmp/connid.json')withopen('/tmp/connid.json')asf:data = http://news.hoteastday.com/a/json.loads(f.read)data["function"],data["namespace"],data["region"],):retmsg = {}retmsg['websocket']['action'] ="closing"retmsg['websocket']['secConnectionID'] = connectionIDrequests.post(os.environ.get("url"), json=retmsg) return retmsg业务函数上报数据的逻辑 , 实际上就是修改常见组件的日志方法 , 以 Python 为例 , 例如重写
推荐阅读
- 湖人队|扎心?一张图看湖人如何应对马赛克三分雨,神龟5米范围没人理他
- 搜狐新闻|准大学生数码三件套如何选?这些元气好物值得种草
- 想好好做医生的胖子|五十岁女性经常有周身无力和疼痛的困扰!该如何应对?医生告诉您
- 儿童饮食|秋冬季如何让宝宝爱上吃水果?稍微蒸一下美味翻倍,营养价值更高
- 队员|北极科考中“遭遇”北极熊,看科考队员如何与它们和谐相处
- 中国历史发展过程|中国历史发展过程!中国游戏外挂发展史:“辅助工具”是如何成长为“苍
- 金色年华录|都是男扮女装谈恋爱,《少女大人》比《女世子》如何?
- 上海市嘉定区人民政府网站|每年消耗3350吨蔬菜150吨肉,嘉定这家中央厨房如何践行“光盘行动”?
- 上海嘉定|如何让《民法典》走进群众心里?嘉定这些街镇和单位这样做
- 没蜡笔的小新|“整容脸”应该被鄙视吗?医生告诉你千篇一律的好看皮囊如何而来
