如果您在免费计划中看到Cloudflare工人这里的定价部分,他们有以下内容
每次请求的CPU时间可达10 to
在付费计划中
每次请求最多30挂墙时间
通常需要比10 to更长的时间来执行一些有用的脚本。根据任务的不同,即使是30多个壁时间也可能很短。
如果您查看工人文档的限制: CPU运行时部分,它有
大多数工作人员请求消耗的时间少于一毫秒。很少能找到超出CPU时间限制的正常运行的Worker脚本。一名工人在免费计划中最多可消耗10毫秒,在“有偿计划”中,捆绑工人最多可消耗50毫秒。付费计划还为增加计算时间提供了30秒的持续时间。对于大多数用例(包括应用程序托管)来说,免费计划上的10 is允许有足够的执行时间。 工人脚本的实际运行时没有限制。只要发送请求的客户端保持连接,Worker脚本就可以继续处理、进行子请求和代表该请求设置超时。当客户端断开连接时,与该客户端请求关联的所有任务都将被取消。您可以使用event.waitUntil()将取消延迟再延迟30秒,或者直到传递给waitUntil()的承诺完成为止。
虽然在一般意义上的CPU时间,墙时间在这个帖子中提到是正确的。我认为这不是这个上下文中的准确含义,因为在post链接中,CPU时间是内核或用户空间中的代码执行时间。
CPU time per request
也不同于AWS中的代码执行CPU时间,因为它提到了以下内容
工人脚本的实际运行时没有限制。
因此,脚本实际运行时(即CPU执行时间)不限于15分钟,就像AWS中的那样。
然后
发布于 2021-08-10 13:46:42
"CPU时间“是指CPU主动执行JavaScript代码的时间。这不包括CPU等待某些事情发生的时间,例如等待fetch()
完成或setTimeout()
启动的时间。
许多工作人员花费不到毫秒的CPU时间来执行。例如,如果您只是在每个请求上更改一个标头,然后将其发送到另一个服务器,那么您的工作人员可能只需花费几百微秒的CPU时间(因此,每一毫秒的十分之一)。在免费计划下,每个请求的工作时间限制在10毫秒以内,这实际上是足够做很多事情的时间。
“墙壁时间”指的是由墙上的时钟测量的时间,即真实世界的时间。与CPU时间不同,墙壁时间包括花费的等待时间。因此,如果您对其他服务器执行fetch()
(HTTP ),并且响应需要3秒,那么整个过程可能不到1毫秒的CPU时间,而是3秒的壁时间。
付费计划指定请求处理的30秒限制。实际上,这里的强制限制是CPU时间,而不是墙时间。因此,一个请求可能会花费更长的时间超过30,只要它没有一直在执行代码。但是,请注意,当请求超过30秒时,请求被随机中断的更改会上升。例如,运行时间很长的请求可能会遭受TCP超时或随机网络断开.此外,当Workers接收到代码更新时,它会给所有在途请求30秒(相当于墙壁时间),以便在取消这些请求之前完成它们。因此,请求运行时间超过30秒的应用程序需要在随机断开连接时实现重试逻辑。(即使对于较短的请求,重试逻辑也是个好主意,因为任意长度的请求都可能出现随机中断,但超过30秒的请求具有更高的风险。)
https://stackoverflow.com/questions/68720436
复制相似问题