2016-05-02 5 views
0

У меня есть приложение Node.js, размещенное в качестве приложения на Microsoft Azure. Периодически он отключается. Я пытаюсь понять, когда это происходит. В попытке сделать это, я отправляю себе электронное письмо по определенным событиям.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

Может быть необработанным Исключение? – opHASnoNAME

+0

Есть ли какое-то событие, которое я могу связать, чтобы поймать это на уровне приложения/сервера? Если да, то как это называется? –

ответ

0

Если ваш почтовый код размещен на Azure Web Apps, вам нужно изменить ваш port к process.env.port, чтобы сделать ваш node.js приложение работает на Azure.

As Azure Web Apps использует IIS для обработки сценариев сопоставления и использует порт для перевода HTTP-запросов. И Azure Web Apps только открывают порт 80 и 443 для публики.

Между тем, вы можете изменить свой prot на process.env.port||1337, чтобы он работал как Azure, так и локально.

обновление

Always On. По умолчанию веб-приложения выгружаются, если они неактивны в течение некоторого периода времени. Это позволяет системе экономить ресурсы. В основном или стандартном режиме вы можете включить Always On, чтобы приложение постоянно загружалось. Если ваше приложение запускает непрерывные веб-задания, вы должны включить Always On, или веб-задания могут не работать надежно.

Вы можете сконфигурировать этот параметр на Лазурном портала: enter image description here

см https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure/ больше.

+0

Я сделал это. Тем не менее, я до сих пор не получаю письмо, когда приложение уходит спать. –

+0

У вас есть ошибки? Какую почтовую службу вы используете в своем приложении? –

+0

Нет. Я просто отправляю электронное письмо через «nodemailer» из старой учетной записи электронной почты Yahoo. Еще раз, он работает во время запуска. Просто, когда приложение идет спать или что-то, что он делает на Azure, электронная почта не выходит. –

0

Это может быть неперехваченное исключение, попробуйте это, чтобы поймать их:

process.on('uncaughtException', function(err) { 
     console.log(err); 
    }); 
Смежные вопросы