Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Product description
===================
Cron4Plone can do scheduled tasks in Plone, in a syntax very like \*NIX
systems' cron daemon. It plugs into Zope's ClockServer machinery.

optionally cron4plone also uses unimr.memcachedlock to make sure that
only one task is running at a time, even when using a distributed environment
like multiple zeo clients on multiple machines.

Installation
============
1. Configure the ticker in the buildout (or zope.conf)::

[instance]
...
eggs =
Products.cron4plone

zope-conf-additional =
<clock-server>
method /<your-plone-site>/@@cron-tick
period 60
</clock-server>

1.1 Optionally use memcached server(s) to share locks

[instance]
...
eggs =
Products.cron4plone
unimr.memcachedlock


you can specify where you are running your memcached servers in the
MEMCACHEDLOCK_SERVERS environment variable, e.g.:

zope-conf-additional =
<environment>
MEMCACHEDLOCK_SERVERS <ip/hostname of host1>:<port>,<ip/hostname of host2>:<port>
</environment>


1.2 Optionally install memcached from buildout

A memcached server is a standalone server process which you can either
get via your favourite package manager (for debian / ubuntu:
apt-get install memcached)

but you can also build it from a buildout:

parts +=
memcached
memcached-ctl
supervisor

[memcached]
recipe = zc.recipe.cmmi
url = http://memcached.googlecode.com/files/memcached-1.4.0.tar.gz
extra_options = --with-libevent=${libevent:location}

[memcached-ctl]
recipe = ore.recipe.fs:mkfile
path = ${buildout:bin-directory}/memcached
mode = 0755
content =
#!/bin/sh
PIDFILE=${memcached:location}/memcached.pid
case "$1" in
start)
${memcached:location}/bin/memcached -d -P $PIDFILE
;;
stop)
kill `cat $PIDFILE`
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac


You need to have the libevent development libraries
(apt-get install libevent-dev)
or in buildout:


[libevent]
recipe = zc.recipe.cmmi
url = http://www.monkey.org/~provos/libevent-1.3b.tar.gz

Make sure that the libevent.so (shared object) file is in your
LD_LIBRARY_PATH before you start the memcached server if you build
the libevent library from the buildout.


If you use supervisor, you can add a line like this to start the
memcached server:
10 memcached ${buildout:directory}/parts/memcached/bin/memcached

2. Configure the scheduled tasks

In the Plone site setup, go to the cron4plone configuration. This form can
be used to enter cron-like jobs.

The cron job should have 5 elements: minute, hour, day_of_month, month and
command expression. For the command python and tal expression can be used.

definition: m h dom m command

Examples:
* 11 * * portal/@@run_me
15,30 * * * python: portal.my_tool.runThis()

3. Wait and see

In the ZMI, go to the CronTool. If a cronjob has run the history is shown.

4

Rationale
=========
Cron4plone uses the clockserver and allows advanced taask scheduling:

- scheduled tasks at scheduled times. E.g. I want to perform a certain
task at 3 AM at the first day of the month.

- single thread running the task: We don't want 2 threads running the
same task at the same time. With only using clock server this might
happen if a task takes longer than the tick period.


TODO
====
- Day of week is missing in cron-like syntax, add it.
- Improve doc test, currently test has basic coverage.
- Perhaps make a configuration form that allows users without cron syntax
knowledge to enter jobs.

License and credits
===================
Authors: "Huub Bouma", mailto:bouma@gw20e.com
"Kim Chee Leong", mailto:leong@gw20e.com

License: This product is licensed under the GNU Public License version 2.
See the file LICENSE included in this product.

Parts of the code were taken from
"PloneMaintenance", http://plone.org/products/plonemaintenance by
"Ingeniweb", http://www.ingeniweb.com/.
"unimr.memcachedlock"

Changelog
=========

1.1.1
-----
* share locks with memcached

1.0 - Unreleased
----------------

* Initial release

Metadata

Release files for Products.cron4plone 1.1.1dev-r93293

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Products.cron4plone 1.1.1dev-r93293
File Size Uploaded Provenance
Products.cron4plone-1.1.1dev-r93293.tar.gz 26.8 kB Without provenance Details

Release files / Products.cron4plone-1.1.1dev-r93293.tar.gz

Download URL Products.cron4plone-1.1.1dev-r93293.tar.gz
Size 26.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e39d90af346cfe761b9dd8ece2537828fc8fc54d19c1e690fa061096632963a2
BLAKE2b-256 checksum
How to use checksums
a9217d3d7e8073ef29f0304583aa4de875b10aca95281e783dc8ebc10a892f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for Products.cron4plone 1.1.1dev-r93293

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page