Twilio 的无服务器功能中的工作线程?

问题描述 投票:0回答:1

我正在使用 Twilio 的无服务器功能构建语音应用程序,在从来电中收集用户语音输入后,我需要运行一个进程,该进程可能需要 > 15 秒才能执行,从而导致超时,我想我可以将呼叫放在保持/进入会议,启动工作线程进行处理,之后我可以修改保持的呼叫并提供处理后的数据。

我已经验证我可以使用工作线程来处理所需的数据并修改保持的呼叫。

但是我不确定是否可以,如果可以的话,如何指定工作线程js文件的路径和名称。

例如如何在下面的代码片段中指定worker.js?

const { Worker } = require('worker_threads');

// Create a new Worker Thread

const worker = new Worker('./worker.js', { workerData: { /* data */ } });

worker.on('message', (result) => {

  // Do something with the result

  console.log(result);

});

如果这是不可能的,我应该探索哪些其他选项,有什么建议吗?还是Twilio的无服务器功能不太适合我的要求?

node.js twilio serverless node-worker-threads
1个回答
0
投票

恐怕无服务器环境无法解决您所描述的问题。无服务器函数通常有最大执行时间。例如,Twilio 无服务器函数的最大执行时间为10 秒。同样,许多其他也有最大执行时间。对于长时间运行的进程来说,这本质上是不够的。即使您可以使用 Workers API(许多无服务器平台不支持),您的 main 函数仍然会闲置并等待,从而超过最大执行时间。

PS:即使您找到了一个无服务器运行时,其最大执行时间正好适合您的需求,但使用无服务器可能是不可行的,因为您是按执行时间付费的。

我建议在传统(非无服务器环境)上运行此过程。长时间运行的流程完成后,也许可以通过 Webhook 调用另一个 Twilio 无服务器函数。这样,您可以继续在 Twilio 无服务器上拥有所有 Twilio 逻辑,并且仅在其他地方托管其他代码。

© www.soinside.com 2019 - 2024. All rights reserved.