InfoQServerless 架构下如何实现日志的实时输出?( 三 )
API 网关涉及到的三个函数:
注册函数:主要用来完成数据存储和函数信息修改等操作 , 是用户建立链接时触发的函数;
importjson, osfromqcloud_cos_v5importCosConfigfromqcloud_cos_v5importCosS3Clientfromtencentcloud.commonimportcredentialfromtencentcloud.scf.v20180416importscf_client, modelsregion = os.environ.get("bucket_region")config = CosConfig(Region=region, SecretId=secretId, SecretKey=secretKey, Token=token)client = CosS3Client(config)response = client.put_object(Bucket=os.environ.get("bucket"),Body=json.dumps({"region": region,"namespace": namespace,"function": name}).encode("utf-8"),Key=connid,EnableMD5=False)try:environmentVariablesList = [{"Key":"real_time_log_id","Value": connid},{"Key":"real_time_log_url","Value": transurl},{"Key":"real_time_log","Value":"open"}]cred = credential.Credential(secreetId, secretKey, token=token)client = scf_client.ScfClient(cred, region)req = models.GetFunctionRequestreq.from_json_string(json.dumps({"FunctionName": name,"Namespace": namespace,"ShowCode":"FALSE"}))resp = client.GetFunction(req)environmentVariables = json.loads(resp.to_json_string)["Environment"]["Variables"]foreveVariablesinenvironmentVariables:ifeveVariables["Key"] =="real_time_log_id"oreveVariables["Key"] =="real_time_log_url"oreveVariables["Key"] =="real_time_log":continueenvironmentVariablesList.append(eveVariables)req = models.UpdateFunctionConfigurationRequestreq.from_json_string(json.dumps({"FunctionName": name,"Environment": {"Variables": environmentVariablesList},"Namespace": namespace}))client.UpdateFunctionConfiguration(req)setFunction2Bucket(name, namespace, secreetId, secretKey, token, connid)returnTrueexceptExceptionase:print(e)returnFalseconnectionID = event['websocket']['secConnectionID']ifnotsetFunctionConfigure(event['queryString']['name'],event['queryString']['namespace'],event['queryString']['region'],os.environ.get("TENCENTCLOUD_SECRETID"),os.environ.get("TENCENTCLOUD_SECRETKEY"),os.environ.get("TENCENTCLOUD_SESSIONTOKEN"),connectionID,os.environ.get("url")):returnFalseif'requestContext'notinevent.keys:return{"errNo":101,"errMsg":"not found request context"}return{"errNo":102,"errMsg":"not found web socket"}
推荐阅读
- 湖人队|扎心?一张图看湖人如何应对马赛克三分雨,神龟5米范围没人理他
- 搜狐新闻|准大学生数码三件套如何选?这些元气好物值得种草
- 想好好做医生的胖子|五十岁女性经常有周身无力和疼痛的困扰!该如何应对?医生告诉您
- 儿童饮食|秋冬季如何让宝宝爱上吃水果?稍微蒸一下美味翻倍,营养价值更高
- 队员|北极科考中“遭遇”北极熊,看科考队员如何与它们和谐相处
- 中国历史发展过程|中国历史发展过程!中国游戏外挂发展史:“辅助工具”是如何成长为“苍
- 金色年华录|都是男扮女装谈恋爱,《少女大人》比《女世子》如何?
- 上海市嘉定区人民政府网站|每年消耗3350吨蔬菜150吨肉,嘉定这家中央厨房如何践行“光盘行动”?
- 上海嘉定|如何让《民法典》走进群众心里?嘉定这些街镇和单位这样做
- 没蜡笔的小新|“整容脸”应该被鄙视吗?医生告诉你千篇一律的好看皮囊如何而来
