开发者社区 > 云原生 > Serverless > 正文

函数计算,自定义容器响应必须是 404 才会提示失败是吗?我这边异步调用返回 500 仍然提示调用成

函数计算,自定义容器响应必须是 404 才会提示失败是吗?我这边异步调用返回 500 仍然提示调用成功

提问45.png

展开
收起
巴拉巴拉巴拉 2023-07-07 12:27:25 64 0
9 条回答
写回答
取消 提交回答
  • 不是的。根据常规的HTTP状态码约定,HTTP状态码5xx表示服务器内部错误,而HTTP状态码4xx表示客户端发起的请求有误。其中,HTTP状态码404表示请求的资源不存在。

    当自定义容器响应的HTTP状态码为404时,通常表示请求的资源不存在,因而会提示失败。而当自定义容器响应的HTTP状态码为500时,表示服务器内部发生错误,此时也应该提示调用失败,而不是成功。

    2023-07-21 21:16:25
    赞同 展开评论 打赏
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    您好,函数计算的异步调用,异步调用会将您的请求加入到后端队列,客户端会立即返回。函数计算后端会将队列中的请求做并发调用。因此您的异步调用会返回成功。

    2023-07-21 14:57:27
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    系统错误 FcCommonError 500 函数计算系统错误,可重试解决,如果问题还未能解决,请加入钉钉用户群(钉钉群号:11721331),联系函数计算工程师即时沟通处理
    文档地址:https://help.aliyun.com/document_detail/74769.html?spm=a2c4g.74769.0.i1

    2023-07-10 10:10:27
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    函数计算自定义容器的响应状态码要求是 200 或 204 才会被视为调用成功,而非 404。对于异步调用返回 500 的情况,函数计算会认为请求已经成功接收并且调用完成,不会视为调用失败。

    2023-07-09 18:44:18
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    200 或 404,函数计算会将该响应视为异常,从而触发函数执行失败。

    如果您的函数执行过程中返回了 500 错误码,函数计算也会将该响应视为异常并提示调用失败。

    2023-07-08 07:51:03
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在函数计算中,自定义容器的响应必须是 404 才会提示失败。如果你的自定义容器异步调用返回了 500 错误,仍然会被视为调用成功。只有当返回状态码为 404 时,函数计算会将其识别为调用失败,并返回相关的错误信息。因此,如果你希望触发函数计算的调用失败逻辑,你需要确保自定义容器的响应状态码为 404。

    2023-07-07 21:24:34
    赞同 展开评论 打赏
  • 要在响应里加一下x-fc-status 的header

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-07-07 21:12:42
    赞同 展开评论 打赏
  • 在函数计算中,自定义容器响应的 HTTP 状态码可以是多种,其中 404 表示资源未找到或无法访问,而 500 则表示服务器内部错误。

    对于异步调用的场景,如果返回的状态码是 500,通常也意味着调用失败。这可能是因为服务器内部出现了一些错误,导致无法正常处理请求。

    在处理函数计算时,可以根据实际需求来设置自定义容器响应的 HTTP 状态码。如果希望在调用失败时返回特定的提示信息或状态码,可以通过代码逻辑来实现这一功能。

    以下是一个示例代码片段,演示如何在函数计算中设置自定义容器响应的 HTTP 状态码:

    python
    import json
    from flask import Flask, abort

    app = Flask(name)

    @app.route('/async_call', methods=['POST'])
    def async_call():

    # 异步调用的代码逻辑...  
    # 如果调用失败,返回 500 状态码和错误信息  
    if failed:  
        abort(500)  
        return json.dumps({'message': 'Failed to make async call'}), 500
    

    在上述示例中,如果调用失败并触发 abort(500),函数计算会返回 HTTP 状态码为 500 的自定义容器响应,同时返回一个包含错误信息的 JSON 格式响应体。

    需要注意的是,具体的设置方式可能因不同的编程语言和框架而有所不同。建议参考相应的文档或教程,或者根据实际需求进行调整和优化。

    2023-07-07 18:50:38
    赞同 展开评论 打赏
  • 在函数计算中,自定义容器的响应状态码决定了函数执行是否成功。如果你的自定义容器返回的响应状态码不是 200 或者 2xx 系列的成功状态码,函数计算将会认为函数执行失败。

    具体来说,以下情况下函数计算会认为函数执行失败:

    1. 如果自定义容器的响应状态码是 404,函数计算将会将这次调用标记为失败,并显示调用失败的提示。

    2. 如果自定义容器的响应状态码是其他非 200 或者 2xx 系列的状态码(如 500),函数计算同样会将这次调用标记为失败,并显示调用失败的提示。

    需要注意的是,函数计算对于自定义容器响应状态码的判断是基于 HTTP 规范的。按照规范,只有 2xx 系列的状态码表示请求成功完成,其他状态码都代表请求出现了错误或异常情况。因此,除了 404 的情况外,任何非 2xx 系列的响应状态码都会被视为函数执行失败。

    如果你想要自定义函数的失败响应,可以根据需要在自定义容器中进行相应的处理和设置。例如,可以在自定义容器中根据业务逻辑返回适当的状态码和错误信息,以便函数计算能够正确判断函数的执行结果。

    总结:在函数计算中,自定义容器响应的状态码决定了函数执行的结果。除了 404 状态码之外,其他非 2xx 系列的状态码都会被认为是函数执行失败的标志。如果你想自定义函数的失败响应,可以根据需要在自定义容器中进行相应的处理和设置。

    2023-07-07 12:51:51
    赞同 展开评论 打赏
滑动查看更多

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载