繁体   English   中英

Axios 请求在本地工作但在无服务器上超时

[英]Axios get request working locally but timing out on serverless

我正在尝试抓取一些网站,但由于某种原因,它可以在本地(本地主机)使用 express 工作,但在我将其部署到 lambda 时则不行。 尝试使用 ff serverless-http 和 aws-serverless-express 和 serverless-express 插件。 还尝试在 axios 和 superagent 之间切换。

路线工作正常,经过数小时的调查,我已将问题缩小到 fetch/axios 位。 当我不向 axios/superagent/etc 添加超时时,应用程序只会继续运行并在 15/30 秒时超时,以设置为准并收到错误 50*。

service: scrape
provider:
  name: aws
  runtime: nodejs10.x
  stage: dev
  region: us-east-2
  memorySize: 128
  timeout: 15
plugins:
  - serverless-plugin-typescript
  - serverless-express
functions:
  app:
    handler: src/server.handler
    events: 
      - http: 
          path: /
          method: ANY
          cors: true
      - http: 
          path: /{proxy+}
          method: ANY
          cors: true

    protected async fetchHtml(uri: string): Promise<CheerioStatic | null> {
        const htmlElement = await Axios.get(uri, { timeout: 5000 });

        if(htmlElement.status === 200) {
            const $ = Cheerio.load(htmlElement && htmlElement.data || '');
            $('script').remove();

            return $;
        }
        return null;
    }

据我所知,axios 的默认超时时间是不确定的。 请记住,API 网关有 29 秒超时的硬限制。

我最近遇到了同样的问题,有时超时是由于冷启动。 所以我基本上不得不在我的前端反应应用程序中为 api 调用添加一个重试逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM