[Checkins] SVN: lovely.remotetask/trunk/ - added namespace
declaration in lovely/__init__.py
Jürgen Kartnaller
juergen at kartnaller.at
Tue Jun 12 12:08:00 EDT 2007
Log message for revision 76637:
- added namespace declaration in lovely/__init__.py
- allow to delay a job
- prepare for version 0.2.0
Changed:
A lovely.remotetask/trunk/CHANGES.txt
U lovely.remotetask/trunk/setup.py
U lovely.remotetask/trunk/src/lovely/__init__.py
U lovely.remotetask/trunk/src/lovely/remotetask/README.txt
U lovely.remotetask/trunk/src/lovely/remotetask/interfaces.py
U lovely.remotetask/trunk/src/lovely/remotetask/job.py
U lovely.remotetask/trunk/src/lovely/remotetask/service.py
-=-
Added: lovely.remotetask/trunk/CHANGES.txt
===================================================================
--- lovely.remotetask/trunk/CHANGES.txt (rev 0)
+++ lovely.remotetask/trunk/CHANGES.txt 2007-06-12 16:07:59 UTC (rev 76637)
@@ -0,0 +1,11 @@
+=============================
+Changes for lovely.remotetask
+=============================
+
+
+2007/06/12 0.2.0:
+=================
+
+ - added namespace declaration in lovely/__init__.py
+ - allow to delay a job
+
Property changes on: lovely.remotetask/trunk/CHANGES.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: lovely.remotetask/trunk/setup.py
===================================================================
--- lovely.remotetask/trunk/setup.py 2007-06-12 10:18:02 UTC (rev 76636)
+++ lovely.remotetask/trunk/setup.py 2007-06-12 16:07:59 UTC (rev 76637)
@@ -3,7 +3,7 @@
setup (
name='lovely.remotetask',
- version='0.1dev',
+ version='0.2.0',
author = "Lovely Systems",
author_email = "office at lovelysystems.com",
description = "A remotetask client utiltiy for zope 3",
Modified: lovely.remotetask/trunk/src/lovely/__init__.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/__init__.py 2007-06-12 10:18:02 UTC (rev 76636)
+++ lovely.remotetask/trunk/src/lovely/__init__.py 2007-06-12 16:07:59 UTC (rev 76637)
@@ -1 +1,25 @@
-# Make a package.
+##############################################################################
+#
+# Copyright (c) 2007 Lovely Systems and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""
+
+$Id$
+"""
+
+__docformat__ = "reStructuredText"
+
+
+try:
+ __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+ pass
Modified: lovely.remotetask/trunk/src/lovely/remotetask/README.txt
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/README.txt 2007-06-12 10:18:02 UTC (rev 76636)
+++ lovely.remotetask/trunk/src/lovely/remotetask/README.txt 2007-06-12 16:07:59 UTC (rev 76637)
@@ -286,10 +286,20 @@
(1970, 1, 1, 4, 10, 0, 3, 1, 0)
-Creating Cron Jobs
-------------------
+A cron job can also be used to delay the execution of a job.
+ >>> cronJob = CronJob(-1, u'echo', (), delay=10,)
+ >>> time.localtime(cronJob.timeOfNextCall(0))
+ (1970, 1, 1, 1, 0, 10, 3, 1, 0)
+ >>> time.localtime(cronJob.timeOfNextCall(1))
+ (1970, 1, 1, 1, 0, 11, 3, 1, 0)
+
+Creating Delayed Jobs
+---------------------
+
+A delayed job is executed once after the given delay time in seconds.
+
>>> count = 0
>>> def counting(input):
... global count
@@ -298,8 +308,33 @@
>>> countingTask = remotetask.task.SimpleTask(counting)
>>> zope.component.provideUtility(countingTask, name='counter')
-here we create a cron job which runs 10 minutes and 13 minutes past the hour.
+ >>> jobid = service.addCronJob(u'counter',
+ ... {'foo': 'bar'},
+ ... delay = 10,
+ ... )
+ >>> service.getStatus(jobid)
+ 'delayed'
+ >>> service.process(0)
+ >>> service.getStatus(jobid)
+ 'delayed'
+ >>> service.process(9)
+ >>> service.getStatus(jobid)
+ 'delayed'
+At 10 seconds the job is executed and completed.
+
+ >>> service.process(10)
+ >>> service.getStatus(jobid)
+ 'completed'
+
+
+Creating Cron Jobs
+------------------
+
+Here we create a cron job which runs 10 minutes and 13 minutes past the hour.
+
+ >>> count = 0
+
>>> jobid = service.addCronJob(u'counter',
... {'foo': 'bar'},
... minute = (10, 13),
Modified: lovely.remotetask/trunk/src/lovely/remotetask/interfaces.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/interfaces.py 2007-06-12 10:18:02 UTC (rev 76636)
+++ lovely.remotetask/trunk/src/lovely/remotetask/interfaces.py 2007-06-12 16:07:59 UTC (rev 76637)
@@ -25,6 +25,7 @@
CANCELLED = 'cancelled'
ERROR = 'error'
COMPLETED = 'completed'
+DELAYED = 'delayed'
CRONJOB = 'cronjob'
class ITaskService(IContained):
@@ -140,7 +141,8 @@
status = schema.Choice(
title=u'Status',
description=u'The current status of the job.',
- values=[QUEUED, PROCESSING, CANCELLED, ERROR, COMPLETED, CRONJOB],
+ values=[QUEUED, PROCESSING, CANCELLED, ERROR,
+ COMPLETED, DELAYED, CRONJOB],
required=True)
input = schema.Object(
@@ -219,4 +221,4 @@
default = [],
required = False,
value_type = schema.TextLine()
- )
\ No newline at end of file
+ )
Modified: lovely.remotetask/trunk/src/lovely/remotetask/job.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/job.py 2007-06-12 10:18:02 UTC (rev 76636)
+++ lovely.remotetask/trunk/src/lovely/remotetask/job.py 2007-06-12 16:07:59 UTC (rev 76637)
@@ -65,6 +65,7 @@
dayOfMonth=(),
month=(),
dayOfWeek=(),
+ delay=None,
):
super(CronJob, self).__init__(id, task, input)
self.minute = minute
@@ -72,11 +73,15 @@
self.dayOfMonth = dayOfMonth
self.month = month
self.dayOfWeek = dayOfWeek
+ self.delay = delay
def timeOfNextCall(self, now=None):
if now is None:
now = time.time()
next = now
+ if self.delay is not None:
+ next += self.delay
+ return int(next)
inc = lambda t: 60
lnow = list(time.localtime(now)[:5])
if self.minute:
Modified: lovely.remotetask/trunk/src/lovely/remotetask/service.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/service.py 2007-06-12 10:18:02 UTC (rev 76636)
+++ lovely.remotetask/trunk/src/lovely/remotetask/service.py 2007-06-12 16:07:59 UTC (rev 76637)
@@ -84,14 +84,18 @@
dayOfMonth=(),
month=(),
dayOfWeek=(),
+ delay=None,
):
jobid = self._counter
self._counter += 1
newjob = job.CronJob(jobid, task, input,
- minute, hour, dayOfMonth, month, dayOfWeek)
+ minute, hour, dayOfMonth, month, dayOfWeek, delay)
self.jobs[jobid] = newjob
self._scheduledQueue.put(newjob)
- newjob.status = interfaces.CRONJOB
+ if delay is None:
+ newjob.status = interfaces.CRONJOB
+ else:
+ newjob.status = interfaces.DELAYED
return jobid
def clean(self, stati=[interfaces.CANCELLED, interfaces.ERROR,
@@ -229,7 +233,8 @@
if len(self._scheduledJobs[first]) == 0:
del self._scheduledJobs[first]
if job.status != interfaces.CANCELLED:
- self._insertCronJob(job, now)
+ if job.status != interfaces.DELAYED:
+ self._insertCronJob(job, now)
return job
# get a job from the input queue
if self._queue:
More information about the Checkins
mailing list