我有一个Node.js应用程序作为Microsoft Azure上的App Service托管。它会定期关闭。我试图了解这种情况何时发生。为了做到这一点,我发送了一封关于某些事件的电子邮件。
目前,我在应用启动时向自己发送电子邮件。然后,我尝试在应用服务停止时发送电子邮件。我尝试使用以下代码:
const app = require('./app');
const port = 1337;
const server = app.listen(port);
// Respond to the server starting.
server.on('listening', function() {
sendEmail('App Service - Listening', 'Web site server listening');
});
server.on('close', function() {
sendEmail('App Service - Closed', 'Web site server closed.');
});
process.on ('SIGTERM', function() {
sendEmail('App Service - Exited', 'Process exited (via SIGTERM)');
});
process.on ('SIGINT', function() {
sendEmail('App Service - Exited', 'Process exited (via SIGINT)');
});
process.on('exit', function() {
sendEmail('App Service - Exited', 'Process exited');
});
请假设sendEmail
功能存在且有效。如上所述,我在应用正在收听时成功收到了一封电子邮件。但是,当应用程序进入睡眠/停止聆听时,我从未收到过。
我错过了什么吗?
答案 0 :(得分:0)
这可能是一个未被捕获的例外,请尝试抓住它们:
process.on('uncaughtException', function(err) {
console.log(err);
});
答案 1 :(得分:0)
如果您的邮政编码托管在Azure Web Apps上,则需要修改 cur.execute("""SELECT to_char(ShopOrder.OrderDate,'YYYY-MM') AS "Order Date",
Book.BookID, Book.title,
COUNT(ShopOrder.ShopOrderID) AS "Total number of order",
SUM(Orderline.Quantity) AS "Total quantity",
SUM(Orderline.UnitSellingPrice * Orderline.Quantity) AS "Total selling value (Order value)",
SUM(Book.Price * Orderline.Quantity) AS "Total selling value(Retail value)
FROM ShopOrder
LEFT JOIN Orderline
ON Orderline.ShopOrderID = ShopOrder.ShopOrderID
LEFT JOIN Book
ON Book.BookID = Orderline.BookID
LEFT JOIN Publisher
ON Publisher.PublisherID = Book.PublisherID
Where Publisher.name = %s
ORDER BY MIN(ShopOrder.OrderDate)""", [publisherName])
至port
以使您的node.js应用程序在Azure上运行。
Azure Web Apps使用IIS处理映射脚本,并使用管道端口转换http请求。 Azure Web Apps仅向公众公开80和443端口。
与此同时,您可以将process.env.port
修改为prot
,以使其同时运行Azure和本地。
始终开启。默认情况下,如果Web应用程序闲置一段时间,则会将其卸载。这使系统可以节省资源。在基本模式或标准模式下,您可以启用始终开启以始终保持应用加载。如果您的应用运行连续的Web作业,则应启用始终开启,否则Web作业可能无法可靠运行。
请参阅https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/了解更多信息。