What is the best task scheduling approach in Plone 4?

cron, plone, scheduled-tasks

Solution

Simply use the built-in `<clock-server>` functionality in zope.conf; list them in the `zope-conf-additional` option of `plone.recipe.zope2instance`:

zope-conf-additional =
  <clock-server>
    method /Plone/path/to/callable
    period 7200
    user username-to-invoke-method-with
    password password-for-user
    host localhost
  </clock-server>

The above snippet will call `/Plone/path/to/callable` every 2 hours, with the Host header set to `localhost` with the configured user and password.

The clock-server was added to Zope 2.10; before this it was a separate product by Chris McDonough. I generally created dedicated views for such tasks.

The alternative is to use a cron job to call either a view (usually with `wget` or `cron`) or a zopectl command line script. I use this when I need precise control over when the script needs to be executed, such as at midnight every day.

Problem

We need to schedule some tasks in Plone 4 (notify users after n days of inactivity, etc.). What is the best way to do it? Is there something in Plone or maybe an old cron job? I would like to avoid cron4plone.

Original source

Related problems