Best way to run scheduled tasks

Today we have built a console application for running the scheduled tasks for our ASP.NET website. But I think this approach is a bit error prone and difficult to maintain. How do you execute your scheduled task (in an windows/IIS/ASP.NET environment)

Update:

Examples of tasks:

  • Sending email from an email-queue in the database
  • Removing outdated objects from the database
  • Retrieving stats from Google AdWords and fill a table in the database.

  • All of my tasks (which need to be scheduled) for a website are kept within the website and called from a special page. I then wrote a simple Windows service which calls this page every so often. Once the page runs it returns a value. If I know there is more work to be done, I run the page again, right away, otherwise I run it in a little while. This has worked really well for me and keeps all my task logic with the web code. Before writing the simple Windows service, I used Windows scheduler to call the page every x minutes.

    Another convenient way to run this is to use a monitoring service like Pingdom. Point their http check to the page which runs your service code. Have the page return results which then can be used to trigger Pingdom to send alert messages when something isn't right.


    This technique by Jeff Atwood for Stackoverflow is the simplest method I've come across. It relies on the "cache item removed" callback mechanism build into ASP.NET's cache system

    Update: Stackoverflow has outgrown this method. It only works while the website is running but it's a very simple technique that is useful for many people.

    Also check out Quartz.NET


    Create a custom Windows Service.

    I had some mission-critical tasks set up as scheduled console apps and found them difficult to maintain. I created a Windows Service with a 'heartbeat' that would check a schedule in my DB every couple of minutes. It's worked out really well.

    Having said that, I still use scheduled console apps for most of my non-critical maintenance tasks. If it ain't broke, don't fix it.

    链接地址: http://www.djcxy.com/p/6628.html

    上一篇: 与Windows任务计划程序分钟

    下一篇: 运行计划任务的最佳方式