1***@163.com
1***@163.com
  • 发布:2024-04-05 17:33
  • 更新:2024-04-06 09:16
  • 阅读:195

【报Bug】云函数递归调用自身,报错【非BUG】是自己的问题

分类:uniCloud

产品分类: uniCloud/腾讯云

示例代码:
if(form.is_batch) {  
    console.log('//如果是批处理红包,则异步调用,前端直接显示弹窗');  
    // 如果没有报错,就让当前云函数 调用当前云函数(云对象同理)。注意:这里是异步的  
    uniCloud.callFunction({  
      name: 'batch-redpacket',  
      data: {  
        id: redpacket_id,  
      }  
    }).catch(e=>{  
      console.log(e.message);  
    }).then(e=>{  
      console.log('//开始批处理');  
    })  

    // 等待500毫秒,给一个请求发出去的时间  
    return await new Promise((resolve, reject) => {  
      setTimeout(() => {  
        resolve(Object.assign(payload, {  
          _id: redpacket_id //红包ID  
        }));  
      }, 500)  
    })  
  }

操作步骤:

就是云函数那边直接保存,并没有执行到batch-redpacket

预期结果:

实际应该是调用云函数batch-redpacket,在内部会循环执行batch-redpacket直到结束

实际结果:

报错

bug描述:

2024-04-05T15:55:04.76Z " 413 Payload Too Large | [http://169.254.0.131:80/admin?&eventId=18ead410270_2&seqId=16afc1188e6f2-18ead40fe09_1c-18ead410270_2]
Error: 413 Payload Too Large | [http://169.254.0.131:80/admin?&eventId=18ead410270_2&seqId=16afc1188e6f2-18ead40fe09_1c-18ead410270_2]
at L.e.then.catch.e (/var/user/@dcloudio/serverless/lib/tcb/uni-cloud.js:1:1584)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)"
2024-04-05T15:55:04.77Z "//开始批处理"

2024-04-05 17:33 负责人:无 分享
已邀请:
yuhespace

yuhespace - Yule

413 Payload Too Large

表示请求的实体过大,服务器无法处理。这通常是因为你尝试上传的数据超过了服务器能接受的最大限制。

  • 1***@163.com (作者)

    uniCloud.callFunction({

    name: 'batch-redpacket',

    data: {

    id: redpacket_id,

    }

    })

    就是这句只传递一个红包ID,就变成数据过大了,不大理解啊

    2024-04-06 09:54

  • 1***@163.com (作者)

    batch-redpacket云函数内部也根据红包ID,获取数据来处理,然后再判断是否进行递归。。 递归的次数100,200次是可以没问题,但到了3000则之间报错,不大理解问题出在哪里 你知道怎么解决吗

    2024-04-06 10:00

  • yuhespace

    回复 1***@163.com: 后台环境限制调到最大了吗

    2024-04-06 10:40

  • 1***@163.com (作者)

    回复 yuhespace: 谢谢啦 应该是在batch-redpacket云函数的处理过程中上传zip导致的 单次处理了最多5000张图片,后面设置成1000张就没问题

    2024-04-06 11:43

要回复问题请先登录注册