Таймеры в Сервисах - PullRequest
2 голосов
/ 13 июля 2009

мы недавно добавили новую функцию в наше программное обеспечение - создание предварительного просмотра для документов, которые загружаются и хранятся на сервере. Мы сделали это следующим образом:

  1. Пользователь загружает документ;
  2. Как только пользователь открывает информационную карточку документа, выдается предварительный просмотр недавно загруженного документа (информация о генерации предварительного просмотра сохраняется в таблице БД);
  3. Каждые 30 секунд наш сервис запускается, просматривает таблицу предварительного просмотра и запускает процедуры генерации предварительного просмотра.

Проблема, с которой я сейчас сталкиваюсь, заключается в следующем: новый код для генерации превью использует некоторые из наших устаревших кодов и иногда «замораживает» процессы Word или Excel. Генерация предварительного просмотра останавливается, и все последующие предварительные просмотры остаются в режиме ожидания, пока я не завершу процессы Word, Excel (мы тестируем предварительный просмотр для документов MS Office). После того, как я убил процессы, генерация предварительного просмотра продолжается.

Я думал о внедрении таймеров в наш сервис, так что если сервис ожидает более 1 минуты после запуска генерации предварительного просмотра, он должен завершить процесс и продолжить генерацию предварительного просмотра для других документов.

Основная проблема, с которой я столкнулся, заключается в том, что я не могу «переместить» вызовы нашего унаследованного кода в отдельные процессы, как мы это делали с другими документами (например, мы реализовали создание файла .ps с помощью GhostScript через Process'es ).

Есть идеи, как "обработать" вызовы унаследованного кода?

1 Ответ

2 голосов
/ 13 июля 2009

Можете ли вы сделать второй процесс, который является сторожевым таймером для первого процесса?

Или вы можете сделать первый процесс автоматически перезапущенным и иметь второй поток таймера, который контролирует его и затем убивает свой собственный процесс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...