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

在阿里函数计算中,函数计算,提交了异步执行。提交成功了,并且返回了请求,为啥不成功?

在阿里函数计算中,函数计算,提交了异步执行。提交成功了,并且返回了请求ID,X-Fc-Stateful-Async-Invocation-Id=[1-653754dc-964fc9d804063d8d1e6c9b7f]
但是丢失了,后台,调用日志 请求列表,查不到。此函数计算,我开通了保留实例的情况下,首次请求会被其它示例执行了,而不是保留实例执行的。这个出乎意料。正常执行了? 那为啥 后台的 调用日志:请求列表 和 函数日志 都查不到 ?

展开
收起
小小鹿鹿鹿 2023-10-30 22:37:02 87 0
5 条回答
写回答
取消 提交回答
  • 在阿里云的函数计算中,异步执行的调用方式确实与同步执行有所不同。异步调用的行为是将任务放入一个队列中,并立即返回一个响应,然后后台处理队列中的任务。以下是一些建议和可能的原因,为什么您在调用日志和函数日志中找不到相关信息:

    1. 异步调用的日志延迟:由于异步调用的工作方式,可能存在日志的稍微延迟。等待一段时间,然后再次检查日志,看是否有相关的条目出现。

    2. 检查函数的返回状态:即使函数被异步调用,如果它在执行过程中发生错误,这应该在日志中有所体现。

    3. 保留实例与普通实例的差异:当您说“我开通了保留实例的情况下,首次请求会被其他示例执行了,而不是保留实例执行的”,这确实是可能的,因为保留实例是为了提供更快的冷启动时间。但是,无论请求是被哪种实例处理的,都应该在日志中看到相关的条目。

    4. 检查日志存储和配置:确保您已经正确配置了日志服务,并且为函数计算赋予了写日志的权限。

    5. 检查调用频率和配额:确保您没有达到函数计算的调用限制或配额,这可能会导致某些调用不被执行。

    6. 查看函数计算控制台中的监控信息:这可能会提供有关函数如何执行以及是否存在任何错误的额外信息。

    7. X-Fc-Stateful-Async-Invocation-Id的使用:这个ID是针对有状态的异步调用提供的。确保您的函数计算确实配置为支持有状态的异步调用,并且您正确使用了这个功能。

    2023-10-31 18:50:02
    赞同 展开评论 打赏
  • 在阿里函数计算中,异步执行的请求ID是用于跟踪异步调用的状态和结果的。如果您在提交成功后收到了请求ID,但无法在后台的调用日志和函数日志中找到相关信息,可能有以下几种原因:

    1. 异步调用尚未完成:异步调用可能需要一些时间才能完成,因此您可能需要等待一段时间才能看到相关的日志信息。

    2. 日志级别设置不正确:请确保您的函数配置中的日志级别设置为适当的级别,以便记录所需的日志信息。您可以检查函数代码中的日志记录语句,并确保它们以正确的方式记录了所需的信息。

    3. 异步调用被其他实例执行:根据您的描述,您提到在开通了保留实例的情况下,首次请求会被其他实例执行。这可能是导致您无法在后台日志中找到相关调用的原因之一。您可以检查函数计算控制台中的实例列表,确认是否有其他实例正在运行,并且它们是否与您的异步调用有关。

    2023-10-31 09:01:06
    赞同 展开评论 打赏
  • 请求ID无效或已过期:您提到在提交异步请求时返回了请求ID,但后来在后台调用日志中找不到该请求。这可能是由于请求ID无效或已过期。在函数计算中,请求ID是临时有效的,如果长时间未使用或已过期,将无法找到对应的请求。
    异步请求未完成或执行失败:异步请求可能尚未完成执行或执行失败,因此在后台调用日志中没有记录。这种情况下,您可以查看函数计算的监控和日志,以了解异步请求的执行状态和错误信息。

    异步任务最佳实践

    https://help.aliyun.com/zh/fc/use-cases/best-practices-for-asynchronous-tasks

    异步任务可以实时感知业务状态、控制执行函数,让您对一些异常情况进行更好的处理,例如报警通知、自动化重试等情况。本文介绍函数计算异步任务的最佳实践。

    背景信息
    FaaS早期主要支持无状态、短时和轻量级的计算能力,例如API后端、图片处理和数据流式处理等。在各类场景中,对于FaaS函数的调用方式可分为异步调用和同步调用。同步调用和异步调用存在的差异是同步调用会立即执行函数,而异步调用则会立刻返回调用方202 HttpCode,并将异步调用消息入队,由后端服务排队处理。

    使用场景
    随着业务的发展,一些在线直播场景的用户在慢慢迁移至FaaS内,这类业务场景通常具有执行时间长、对延时敏感和可用性要求高等特征,开发人员需实时感知业务状态和控制函数的执行。由于异步调用对延时不敏感,同步调用长链接的稳定性比较差,并且占用客户端资源,所以既无法使用异步调用也无法使用同步调用。但由于异步调用在大量突增流量的离线业务下,具有削峰填谷的特点,可以平滑缓冲对业务下游系统的冲击,所以函数计算对异步调用进行相关拓展,引入异步任务。

    2023-10-31 08:38:43
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    如果您的异步执行提交成功了,并且返回了请求ID,那么通常情况下,您的请求已经被成功处理。但是,如果您在后台的调用日志请求列表和函数日志中都无法查到您的请求,那么可能是以下几种情况导致的:

    1. 您的请求处理时间非常短,以至于在您查看日志之前已经被处理完成了。您可以尝试增加请求处理时间,以便更好地查看请求的处理情况。
    1. 您的请求处理失败了,并且没有生成日志。您可以尝试查看函数计算的错误日志,以了解请求处理失败的原因。
    1. 您的请求被保留实例执行了,而不是按您的预期执行。您可以尝试查看保留实例的日志,以了解请求的处理情况。
    2023-10-31 07:59:53
    赞同 展开评论 打赏
  • 异步调用成功后,函数计算会返回状态码202,表示请求接收成功。同时会通过请求头返回Request ID和Stateful Invocation ID,格式如"X-Fc-Request-Id": "80bf7281713e1", "X-Fc-Stateful-Async-Invocation-Id": "7522ba401c22e"。

    Stateful-Async-Invocation-Id该ID的命名规则只能以英文大小写字母或下划线()开头,由英文大小写字母、数字(0-9)、下划线()及短划线(-)组成,不超过128个字符。如果您未设置异步调用的ID,系统则会自动生成一个ID。

    从你的返回请求ID看来没有执行成功。

    关于没有返回日志可以查看X-Fc-Log-Type的类型是默认值为None,不返回请求日志,设置为Tail:返回当前请求产生的最后4 KB日志。

    ——参考来源于阿里云官方文档。

    2023-10-31 07:56:29
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

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