2012-02-04 6 views
6

Я использую System.Runtime.Caching.MemoryCache для имитации повторяющейся задачи в запущенном приложении .NET MVC, развернутом в AppHarbor.Имитация фоновой задачи на AppHarbor

Запись в кэше добавляется с помощью CacheItemPolicy, который содержит AbsoluteExpiration смещения и RemovedCallback, который вызывает метод и перезапускает добавление элемента в кэше (как описано here)

MemoryCache заполняется первый раз в Application_Start. Он работает нормально локально, но, похоже, не работает после развертывания в AppHarbor (также проверяется с HttpRuntime.Cache, тот же результат).

Мое приложение работает под учетной записью CANOE (бесплатно) на AppHarbor, у которой есть только один рабочий. Означает ли это, что я не смогу имитировать фоновое задание, пока не перейду на какой-то платный план?

Спасибо!

ответ

0

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

Как насчет того, чтобы использовать услугу, например, https://stillalive.com/, периодически посещать страницу вашего сайта, которая затем закручивает новый поток и запускает фоновое задание? Его доступно как бесплатное дополнение.

Я думал о том, чтобы сделать что-то подобное, ожидая, когда функциональность фоновой задачи будет доступна.

+0

Я думал о том, чтобы опросить страницу снаружи, но моя задача занимает некоторое время, чтобы закончить. Запросы времени ожидания AppHarbor через 10 секунд или около того, и я не знаю, выполняется ли действие еще или нет. –

4

Ваше приложение должно иметь посетителей время от времени, чтобы это работало. Помимо «StillAlive», Pingdom также является хорошей ставкой для генерации запросов к вашему приложению. Вы также должны посмотреть на MomentApp. Мы ожидаем, что в ближайшее время будут готовы исходные задачи.

+0

как вы можете предложить мониторинг как средство для реализации функциональности? наличие функции, полагающейся на статус мониторинга, кажется действительно дилетантским для меня. Можете ли вы ответить на вопрос, почему обратный вызов кеша не называется должным образом? Спасибо. – nakhli

+0

@ChakerNakhli Я не знаю, что ваш обратный вызов в кеше не вызывается, это ваше приложение. Pingdom и StillAlive создают запросы к вашему приложению к тому, что обратный вызов кэша получает шанс быть уволенным. Спасибо. – friism

+1

Во-первых, я действительно люблю appharbor. Это разумно отличная идея. Тем не менее, мониторинг предназначен для * мониторинга состояния приложения и измерения его производительности. Вы должны * никогда не * * * * * * * * * * * * * * * * * Вы должны минимизировать эффект зонда; не полагайтесь на это. Я полагаюсь на мониторинг, это означает, что, если операционная система решит изменить его, они просто сломают приложение! Не приемлемо в реальной жизни. Извините, но поощряя людей использовать мониторинг для внедрения рабочих, делает appharbor как игрушку для любителей, а не прочную платформу для реальных приложений. – nakhli