[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