{
"info": {
"author": "Goldmund, Wyldebeast & Wunderliebe",
"author_email": "info@gw20e.com",
"bugtrack_url": null,
"classifiers": [
"Framework :: Plone",
"Programming Language :: Python",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "Product description\n===================\nCron4Plone can do scheduled tasks in Plone, in a syntax very like \\*NIX\nsystems' cron daemon. It plugs into Zope's ClockServer machinery.\n\nOptionally cron4plone also uses unimr.memcachedlock to make sure that\nonly one task is running at a time, even when using a distributed environment\nlike multiple zeo clients on multiple machines.\n\nRationale\n=========\nCron4plone uses the clockserver and allows advanced task scheduling:\n\n* Scheduled tasks at scheduled times. E.g. I want to perform a certain task at \n 3 AM on the first day of the month.\n* Single thread running the task: We don't want 2 threads running the same task\n at the same time. When using clock server only this might happen if a task \n takes longer than the tick period.\n\n\nInstallation\n============\n\n1. Configure the ticker in the buildout (or zope.conf)\n------------------------------------------------------\n\n`buildout.cfg`::\n\n [instance]\n ...\n eggs = \n Products.cron4plone\n\n zope-conf-additional = \n \n method //@@cron-tick\n period 60\n user admin\n password admin_password\n \n\nThe `user` and `password` variables can be omitted, but are required if you\nwant to call a view that requires special permissions, for example when trying \nto create content.\n\n1.1 Multiple instances\n~~~~~~~~~~~~~~~~~~~~~~\n\nIf you have multiple Zope instances in your buildout, it makes sense to add the\n`zope-conf-additional` to one instance only. This will ensure only one instance\nwill try to run the `@@cron-tick` method. \n\n`Products.cron4plone` should be present in all instances, or else the instance\nwon't have the software for CronTool object. This will cause errors on startup\nand you won't be able to change the cron jobs.\n\n1.2 Optionally use memcached server(s) to share locks\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou would use memcached_ if your Zope instance runs on multiple machines. In\nthis case, all machines would run `@@cron-tick` at the same time, which is not\nwhat you want, especially when creating content. Memcached will share a lock\nbetween multiple machine, so only one machine will run the cron job.\n\nA memcached server is a standalone server process which you can either\nget via your favourite package manager (for Debian / Ubuntu:\n`apt-get install memcached`)\n\nInstall and configure `memcached`, and add unimr.memcachedlock_ to \n`buildout.cfg`::\n\n [instance]\n ...\n eggs =\n Products.cron4plone\n unimr.memcachedlock\n\nYou can specify where you are running your memcached servers in the \nMEMCACHEDLOCK_SERVERS environment variable, e.g.::\n \n zope-conf-additional =\n \n MEMCACHEDLOCK_SERVERS :,:\n \n\nThe default port for memcached is 11211.\n\n1.3 Optionally install memcached from buildout\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYou can also build `memcached` from a buildout::\n\n parts +=\n memcached\n memcached-ctl\n supervisor\n\n [memcached]\n recipe = zc.recipe.cmmi\n url = http://memcached.googlecode.com/files/memcached-1.4.0.tar.gz\n extra_options = --with-libevent=${libevent:location}\n\n [memcached-ctl]\n recipe = ore.recipe.fs:mkfile\n path = ${buildout:bin-directory}/memcached\n mode = 0755\n content =\n #!/bin/sh\n PIDFILE=${memcached:location}/memcached.pid\n case \"$1\" in\n start)\n ${memcached:location}/bin/memcached -d -P $PIDFILE\n ;;\n stop)\n kill `cat $PIDFILE`\n ;;\n restart|force-reload)\n $0 stop\n sleep 1\n $0 start\n ;;\n *)\n echo \"Usage: $SCRIPTNAME {start|stop|restart}\" >&2\n exit 1\n ;;\n esac\n\n\nYou need to have the libevent development libraries\n(apt-get install libevent-dev)\nor in buildout::\n\n [libevent]\n recipe = zc.recipe.cmmi\n url = http://www.monkey.org/~provos/libevent-1.3b.tar.gz\n\nMake sure that the libevent.so (shared object) file is in your\nLD_LIBRARY_PATH before you start the memcached server if you build\nthe libevent library from the buildout.\n\n\nIf you use supervisor, you can add a line like this to start the\nmemcached server::\n\n 10 memcached ${buildout:directory}/parts/memcached/bin/memcached\n\n2. Configure the scheduled tasks\n--------------------------------\n\nIn the Plone site setup, go to the cron4plone configuration. This form can \nbe used to enter cron-like jobs. \n\nThe cron job should have 5 elements: minute, hour, day_of_month, month and \ncommand expression. For `command`, a TAL expression can be used (including\n'python: '). The variable `portal` is the Plone site root.\n\nExamples::\n\n * 11 * * portal/@@run_me\n 15,30 * * * python: portal.my_tool.runThis()\n\n3. Wait and see\n---------------\n\nIn the ZMI, go to the CronTool. If a cronjob has run the history is shown.\n\n\nTODO\n====\n- Day of week is missing in cron-like syntax, add it.\n- Send mail report each time a job run, or only when one fail.\n- Improve doc test, currently test has basic coverage.\n- Perhaps make a configuration form that allows users without cron syntax\n knowledge to enter jobs.\n\nLicense and credits\n===================\n\nAuthors: `Huub Bouma`_ and `Kim Chee Leong`_\n\nLicense: This product is licensed under the GNU Public License version 2.\nSee the file docs/LICENSE.txt included in this product.\n\nParts of the code were taken from plonemaintenance_ by Ingeniweb_.\n\n.. _plonemaintenance: http://plone.org/products/plonemaintenance \n.. _memcached: http://memcached.org/\n.. _Ingeniweb: http://www.ingeniweb.com/\n.. _unimr.memcachedlock: http://pypi.python.org/pypi/unimr.memcachedlock/\n.. _Huub Bouma: mailto:bouma@gw20e.com\n.. _Kim Chee Leong: mailto:leong@gw20e.com\n\nChangelog\n=========\n\n1.1.11 (2014-10-19)\n-------------------\n\n- Added z3c-slug and made sure that the CMF.Core permisssions are loaded in the\n zcml. Also added a gitignore. [benniboy]\n\n\n1.1.10 (2012-10-08)\n-------------------\n\n- Make configlet work on context that implements IPloneSiteRoot [huub_bouma]\n\n\n1.1.9 (2011-05-19)\n------------------\n\n- Add MANIFEST.in to include docs in release. [WouterVH]\n- fixed bug in the isPending method: default parameter has to be inside the method or it will have the same value as when the instance was started so tasks will not be rerun as expected [svincic]\n\n\n1.1.8 (2011-03-30)\n------------------\n\n- Fix issue with string formatting for date in crontab utils by casting expected\n values to integers at first use. [davidjb]\n\n\n1.1.7 (2011-03-25)\n------------------\n\n- Convert all DateTime calls to use UTC. This fixes a bug when switching to\n daylight saving time. (thanks for bug report + fix to Michael Lindig)\n\n- Fix comparison bug in comma-separated cron syntax by first casting to an integer.\n (thanks for bug report + fix to David Breitkreutz)\n\n\n1.1.6 (2010-10-19)\n------------------\n\n- No longer support for the extened cron syntax with the /N and N-M formats\n This didn't work as intended. The logic in the cron_utils is flawed i.c.w that\n syntax. That old code has been moved to a enumeration-support branch.\n\n\n1.1.5rc1 (2010-07-30)\n---------------------\n\n- Add locales-directories [WouterVH]\n\n- Code-cleanup with pyflakes [WouterVH]\n\n- Removed tests.py-module, since we already have a tests-directory [WouterVH]\n\n- Removed setup.cfg to have full control over name of released egg.\n [WouterVH, khink]\n\n- Extended and re-formatted documentation [khink]\n\n\n1.1.4\n-----\n\n- Patch by Derek Broughton which extends the cron syntax so that you can now\n also use /N and N-M formats\n\n\n1.1.3\n-----\n\n- The egg with version 1.1.2 on egg servers (pypi plone.org) is corrupt.\n\n- Fixed README, contained invalid rst\n\n\n1.1.2\n-----\n\n- Fixed bug, missing 'ConflictError' import\n\n\n1.1.1\n-----\n\n- share locks with memcached\n\n\n1.0\n---\n\n- Initial release",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://www.gw20e.com/",
"keywords": "crontab plone cron scheduling",
"license": "GPL",
"maintainer": null,
"maintainer_email": null,
"name": "Products.cron4plone",
"package_url": "https://pypi.org/project/Products.cron4plone/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/Products.cron4plone/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://www.gw20e.com/"
},
"release_url": "https://pypi.org/project/Products.cron4plone/1.1.11/",
"requires_dist": null,
"requires_python": null,
"summary": "cron4plone can do scheduled tasks in Plone",
"version": "1.1.11"
},
"last_serial": 1275614,
"releases": {
"0.2": [],
"0.2dev-r84501": [
{
"comment_text": "",
"digests": {
"md5": "925d4d204ff0e4a2764d6037b70c9cb8",
"sha256": "e8a9d3faf1423ac081cd16c3d72e74c9203807262a0fc91b62ff0818c71fce37"
},
"downloads": -1,
"filename": "Products.cron4plone-0.2dev-r84501.tar.gz",
"has_sig": false,
"md5_digest": "925d4d204ff0e4a2764d6037b70c9cb8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18533,
"upload_time": "2009-04-17T16:59:36",
"url": "https://files.pythonhosted.org/packages/bf/c1/67bf25069ef991985a74dde6b6e080cf9fdc187932fb108711eb4a5c2db9/Products.cron4plone-0.2dev-r84501.tar.gz"
}
],
"0.2dev-r86589": [
{
"comment_text": "",
"digests": {
"md5": "c17556e7d496877550d4e41dea0b9916",
"sha256": "64785689bf7942bf6e951946e4f53ee3b30715543fa33ebd43d2c60d51df2525"
},
"downloads": -1,
"filename": "Products.cron4plone-0.2dev-r86589.tar.gz",
"has_sig": false,
"md5_digest": "c17556e7d496877550d4e41dea0b9916",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23636,
"upload_time": "2009-06-17T10:03:45",
"url": "https://files.pythonhosted.org/packages/29/4b/1d78319eb14dfe741be8e88abb08ce5014a2f49542b017221fbdb7e46049/Products.cron4plone-0.2dev-r86589.tar.gz"
}
],
"1.1.1": [],
"1.1.10": [
{
"comment_text": "",
"digests": {
"md5": "e9ad788ac9b41f828a8879c502b71406",
"sha256": "c4368e92b94d950915c3298a7376c112a7fb67cc1c7c4802e346452276e7c7c6"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.10.tar.gz",
"has_sig": true,
"md5_digest": "e9ad788ac9b41f828a8879c502b71406",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 24749,
"upload_time": "2012-10-08T15:08:44",
"url": "https://files.pythonhosted.org/packages/e0/05/1773eb9aae50168a985e715cc3fd5c3cc65ca9b5572b6abb136c39255cfc/Products.cron4plone-1.1.10.tar.gz"
}
],
"1.1.11": [
{
"comment_text": "",
"digests": {
"md5": "7947d99f89a71d353d74ffe47e4ae6a9",
"sha256": "20f1b6ab481213d59b81c57a5d8ff057c698224d8fccb53879898cd7d751d0e5"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.11.zip",
"has_sig": false,
"md5_digest": "7947d99f89a71d353d74ffe47e4ae6a9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 42301,
"upload_time": "2014-10-19T12:46:05",
"url": "https://files.pythonhosted.org/packages/c9/11/b7dd34e7756bb835abeeb68189b24f571e3f0e15d5173f76808494c28cbc/Products.cron4plone-1.1.11.zip"
}
],
"1.1.1dev-r0": [],
"1.1.1dev-r93293": [
{
"comment_text": "",
"digests": {
"md5": "3f304c36d15585eb51a7d7c17b309d10",
"sha256": "e39d90af346cfe761b9dd8ece2537828fc8fc54d19c1e690fa061096632963a2"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.1dev-r93293.tar.gz",
"has_sig": false,
"md5_digest": "3f304c36d15585eb51a7d7c17b309d10",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 26845,
"upload_time": "2009-07-31T15:05:50",
"url": "https://files.pythonhosted.org/packages/a9/21/7d3d7e8073ef29f0304583aa4de875b10aca95281e783dc8ebc10a892f1e/Products.cron4plone-1.1.1dev-r93293.tar.gz"
}
],
"1.1.3": [
{
"comment_text": "",
"digests": {
"md5": "192595a34724a007ec6778f293782204",
"sha256": "28589390c3c85ff98b89372a0e299bc26238adf489fea5d925e82447d4719653"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.3.tar.gz",
"has_sig": false,
"md5_digest": "192595a34724a007ec6778f293782204",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 27053,
"upload_time": "2010-02-19T10:05:19",
"url": "https://files.pythonhosted.org/packages/4b/d7/ed6f1d63486c2be4045a909497b9840b10525d7b0facd97d90a98157e812/Products.cron4plone-1.1.3.tar.gz"
}
],
"1.1.4dev-r111911": [
{
"comment_text": "",
"digests": {
"md5": "af72ccf588bc706c56bcd4ab7a08b65e",
"sha256": "23911c5e2391f7aa7f6e3a8a8f6de166346895f5c10d5e30378661de4e465319"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.4dev-r111911.tar.gz",
"has_sig": false,
"md5_digest": "af72ccf588bc706c56bcd4ab7a08b65e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 25411,
"upload_time": "2010-02-27T10:46:43",
"url": "https://files.pythonhosted.org/packages/76/2e/6c0d2f090a664e3d7c9096516bb4d36c7412b1fbe2771b8bd4c9a130ce0b/Products.cron4plone-1.1.4dev-r111911.tar.gz"
}
],
"1.1.5rc1": [
{
"comment_text": "",
"digests": {
"md5": "f249f726c3591d0216a22b42fdbd21ba",
"sha256": "e8e2e900d77a4a58a5edce7e4c559304d38b6e1d98f0ae7b5ffcaa2d733dc958"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.5rc1.tar.gz",
"has_sig": false,
"md5_digest": "f249f726c3591d0216a22b42fdbd21ba",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 21184,
"upload_time": "2010-07-30T11:40:54",
"url": "https://files.pythonhosted.org/packages/20/57/6be02b2f01540fd308153e25d36bc12babc8087694323c9e9be8f7ec5a52/Products.cron4plone-1.1.5rc1.tar.gz"
}
],
"1.1.6": [
{
"comment_text": "",
"digests": {
"md5": "c078a940682a138bc7e202483f329db4",
"sha256": "6892607776108ecfb77908cd8c2a5bcf6700fd9a02e87ad4ff0c0e641bed1d81"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.6.tar.gz",
"has_sig": false,
"md5_digest": "c078a940682a138bc7e202483f329db4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22991,
"upload_time": "2010-10-19T11:14:23",
"url": "https://files.pythonhosted.org/packages/31/10/795537ea4fc4afb354781a16f34fc8488cd381a7908bd455b78ce86c4021/Products.cron4plone-1.1.6.tar.gz"
}
],
"1.1.7": [
{
"comment_text": "",
"digests": {
"md5": "6f57b81b66ea036a9a7fad8410db82c4",
"sha256": "eee2dca55af46ac61048e0d144018011e06bf1bf5d7fb9387593e843db52b232"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.7-py2.6.egg",
"has_sig": true,
"md5_digest": "6f57b81b66ea036a9a7fad8410db82c4",
"packagetype": "bdist_egg",
"python_version": "2.6",
"requires_python": null,
"size": 36364,
"upload_time": "2011-03-25T11:26:39",
"url": "https://files.pythonhosted.org/packages/be/d7/8c305205bcb671ca5ee271bd16d3bb144997b6b8ccea9219647be9d91bfa/Products.cron4plone-1.1.7-py2.6.egg"
},
{
"comment_text": "",
"digests": {
"md5": "ac7be9f9244756156c6362199579ec9b",
"sha256": "bb40f9cac9f647878f8fc9a0eed99d18a505b7994941ec4b8b8240e13639976e"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.7.tar.gz",
"has_sig": true,
"md5_digest": "ac7be9f9244756156c6362199579ec9b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23365,
"upload_time": "2011-03-25T11:26:38",
"url": "https://files.pythonhosted.org/packages/89/68/50c379384c42f08a55b2fd6919aa83e8824e5519c52d2483003ee1a39b22/Products.cron4plone-1.1.7.tar.gz"
}
],
"1.1.8": [
{
"comment_text": "",
"digests": {
"md5": "b6313b82a0bbea423166f778ead524c5",
"sha256": "c460eaca5c00e086e75d26fd184ad25cd0e15ab738a483e4009b8f96b924c0a8"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.8-py2.6.egg",
"has_sig": true,
"md5_digest": "b6313b82a0bbea423166f778ead524c5",
"packagetype": "bdist_egg",
"python_version": "2.6",
"requires_python": null,
"size": 36389,
"upload_time": "2011-03-30T02:31:57",
"url": "https://files.pythonhosted.org/packages/59/29/e1b82377a22bf4ea79035316716188306d2f791d052f12e18a6a15f5371d/Products.cron4plone-1.1.8-py2.6.egg"
},
{
"comment_text": "",
"digests": {
"md5": "43310056f84b4e5aed1f48f1a1a8e354",
"sha256": "dfae134fa60a5fa8da23f1b2daec681c1573b802050f78cb666f3b4358ee868b"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.8.tar.gz",
"has_sig": true,
"md5_digest": "43310056f84b4e5aed1f48f1a1a8e354",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 24922,
"upload_time": "2011-03-30T02:31:50",
"url": "https://files.pythonhosted.org/packages/a8/cd/1b5b179a2927a84a6e4cee2f53ae0c1ffc1046bd0ca0c4918e33372fc240/Products.cron4plone-1.1.8.tar.gz"
}
],
"1.1.9": [
{
"comment_text": "",
"digests": {
"md5": "9a55db8c83acf64ecc39cfb587bcee9d",
"sha256": "c59de20fb508c6cd587166431f307f230cf0be0cb6d25f0a6d83b9ac1466409a"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.9.tar.gz",
"has_sig": true,
"md5_digest": "9a55db8c83acf64ecc39cfb587bcee9d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23984,
"upload_time": "2011-05-19T18:28:09",
"url": "https://files.pythonhosted.org/packages/d9/7f/72441734296503d84529c398be4aac06a57a8f7d6d697eefc1dee46eca5a/Products.cron4plone-1.1.9.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "7947d99f89a71d353d74ffe47e4ae6a9",
"sha256": "20f1b6ab481213d59b81c57a5d8ff057c698224d8fccb53879898cd7d751d0e5"
},
"downloads": -1,
"filename": "Products.cron4plone-1.1.11.zip",
"has_sig": false,
"md5_digest": "7947d99f89a71d353d74ffe47e4ae6a9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 42301,
"upload_time": "2014-10-19T12:46:05",
"url": "https://files.pythonhosted.org/packages/c9/11/b7dd34e7756bb835abeeb68189b24f571e3f0e15d5173f76808494c28cbc/Products.cron4plone-1.1.11.zip"
}
]
}