Задать вопрос
dimon_durak
@dimon_durak
Дурак это не фамилия, дурак - это профессия

Как правильно выполнять разовые операции в ImpressAS?

Вот допустим надо сделать что-то один раз. Например, распарсить xml и положить результаты в базу

А как правильно это делать в ImpressAS, когда база подключена через импрессовский драйвер? В каком каталоге создавать скрипт, и что сделать для того, чтобы ему было доступно пространство имён Импресса?

Мне кажется, что applications\myApp\client не самое подходящее место для такой задачи - ведь это чисто серверная задача. Равно, как и applications\myApp\tasks - всё-таки сабжевая задача запускается не по расписанию, а руками.
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Если операция должна быть доступна из разных мест приложения, то ее можно положить в /applications/myApp/lib, но тут, скорее всего, речь идет об операции, навешенной на обработчик HTTP, но чтобы она не мешала другим запросам. Если такая операция долгая, в этом случае, ее нужно форкнуть в отдельный процесс, как сделано в примере: /applications/example/server/examples/tools/forkWorker.json

Файл: get.js
module.exports = function(client, callback) {
  client.context.data = { someDataForWorker: 'parameterValue' };
  client.fork('worker');
  callback();
};


Файл: worker.js
module.exports = function(client, callback) {
  console.log('Message from forked worker');
  console.dir(Object.keys(client));
  callback();
};


Из worker.js видны соединения с базой, все, что подгружается из /lib и /init, это полноценный процесс, только не обрабатывающий HTTP.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы