Запланированные задачи для веб-приложений

StackOverflow https://stackoverflow.com/questions/23382

  •  09-06-2019
  •  | 
  •  

Вопрос

Каковы различные подходы к созданию запланированных задач для веб-приложений, с отдельным веб-приложением или без него?

Это было полезно?

Решение

Если мы говорим о платформе Microsoft, то я бы всегда разрабатывал отдельную службу Windows для обработки таких пакетных задач.

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

Другие советы

Джефф обсуждал это в блоге Stack Overflow - http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

По сути, Джефф предложил использовать CacheItemRemovedCallback в качестве таймера для вызова определенных задач.

Лично я считаю, что автоматизированные задачи должны обрабатываться как служба, запланированная задача Windows или задание в SQL Server.

В Linux проверьте cron.

Я думаю, что Stack Overflow сам по себе использует истечение срока действия applicationCache для запуска фонового кода с интервалами.

Если вы находитесь на хостинге Linux, вы почти наверняка будете использовать cron ( хрон ).

Под Linux вы можете использовать задания cron (http://www.unixgeeks.org/security/newbie/unix/cron-1.html) для планирования задач.

Используйте средства получения URL-адресов, такие как wget или curl, для выполнения HTTP-GET-запросов.

Защитите ваши URL-адреса с помощью аутентификации, чтобы никто не мог выполнять задачи, не зная пользователя / пароля.

Я думаю, что встроенный планировщик задач Windows является подходящим инструментом для этой работы.Для этого требуется стороннее приложение.

Это может быть или не быть тем, что вы ищете, но прочтите эту статью ".Имитация службы Windows с помощью ASP.NET для выполнения запланированных заданий".Я думаю, что StackOverflow может использовать этот метод или, по крайней мере, говорилось о его использовании.

Очень простой метод, который мы использовали там, где я работаю, заключается в следующем:

  1. Настройте веб-сервис / веб-метод, который выполняет задачу.При желании этот веб-сервис может быть защищен с помощью имени пользователя / пароля.
  2. Создайте консольное приложение, которое вызывает эту веб-службу.При желании вы можете попросить консольное приложение отправить параметры и / или получить обратно какие-то показатели для вывода на консоль или во внешнее ведение журнала.
  3. Запланируйте этот исполняемый файл в выбранном планировщике задач.

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

Используйте средства получения URL-адресов, такие как wget или curl, для выполнения HTTP-GET-запросов.

Защитите ваши URL-адреса с помощью аутентификации, чтобы никто не мог выполнять задачи, не зная пользователя / пароля.

Вы также можете указать cron запускать php-скрипты напрямую, например.И вы можете установить разрешения для файла PHP, чтобы запретить другим людям доступ к ним или, что еще лучше, не размещать эти служебные скрипты в каталоге, доступном через Интернет...

Java и Spring - используют quartz.Очень приятный и надежный -- http://static.springframework.org/spring/docs/1.2.x/reference/scheduling.html

Я думаю, что есть более простые способы, чем использование cron (Linux) или планировщика задач (Windows).Вы можете встроить это в свое веб-приложение, используя:(a) планировщик quartz,

или, если вы не хотите интегрировать в свое приложение другую стороннюю библиотеку:(b) создайте поток при запуске, который использует стандартный класс Java 'java.util.Timer' для выполнения ваших задач.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top