由挂起导致的 AWS Lambda 函数“进程在完成请求之前退出”
AWS Lambda Function "Process exited before completing request" caused by hanging?
我开发了一个节点应用程序,我想将其称为AWS Lambda应用程序。
该应用程序按 AWS Lambda 的预期工作,但我的 CloudWatch 日志始终以以下错误结束:Process exited before completing request
。
我编写了一些代码来确保我的context.succeed()
和context.fail()
调用正在发生,并且确实发生了。但是,在本地运行时,我还注意到我在 start.js
中成功记录与命令提示符再次出现之间存在滞后,这让我相信一旦进行了这些调用,可能还会有一些节点进程发生。这是否会导致错误,如果是这样,什么是分类和解决问题的好方法?
相关代码如下:
λ句柄.js
import log from './log';
import database from './database';
import User from './database/models/user';
export function handle(event, context) {
log.info('CS Blogs Feed Aggregator Started');
database.sync()
.then(() =>
User.findAll({
attributes: ['id', 'blogFeedURI']
}))
.then(users => {
users.forEach(user => {
log.info({ user }, 'User loaded from database');
});
})
.then(() => {
// context.done() called so AWS knows function completed successfully
context.succeed();
})
.catch(error => {
context.fail(error);
});
}
start.js(用于测试上下文。调用成功/失败(
// This function invokes the AWS Lambda Handle as AWS would
// but allows you to do it from your local machine for development
// or from a non-AWS server
import { handle } from './lambda-handle';
import log from './log';
handle({}, {
succeed: result => {
log.info({ result: result || 'No result returned' }, 'Process succeeded');
},
fail: error => {
log.error({ error: error || 'No error returned' }, 'Process failed');
}
});
代码在部署之前由 babel 转译。但是,我怀疑有更多的逻辑问题,所以我向您展示了原始源代码。
如果需要更多信息,存储库可在此处获得:https://github.com/csblogs/feed-downloader/tree/fix/lambda-implementation-details
谢谢
我很确定这是由 bunyan( dtrace-provider
(中至少 1 个本机模块依赖项引起的。本机模块需要在运行它们的系统上构建/安装。因此,对于 Lambda,您需要在 linux ec2 实例上运行npm install
,或者可能需要在流浪者上运行,以获得正确版本的dtrace-provider
。
看:使用带有节点 gyp 的本机绑定的交叉编译节点模块https://aws.amazon.com/blogs/compute/nodejs-packages-in-lambda/(滚动到本机模块(
您可能只是删除 Bunyan 以验证它是否有效,然后沿着 ec2/vagrant 编译路线(如果可以修复它(。
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 弹出窗口出现,然后退出
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 退出全屏不起作用
- 基于两个条件退出While循环
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- 由挂起导致的 AWS Lambda 函数“进程在完成请求之前退出”
- 正在node.js中验证请求,如果出现错误则退出