After adding reposting/unclaiming reflect those changes here.

This commit is contained in:
Joshua Harlow
2013-05-16 12:33:52 -07:00
parent 1050f60cc2
commit 77bfeea117

View File

@@ -21,6 +21,7 @@ from datetime import datetime
import functools
import logging
import threading
import weakref
from taskflow import catalog
from taskflow import exceptions as exc
@@ -47,11 +48,11 @@ def check_not_closed(meth):
class MemoryClaimer(job.Claimer):
def claim(self, job, owner):
# Straight foward check if already claimed.
if job.owner is not None:
raise exc.UnclaimableJobException()
job.owner = owner
def unclaim(self, job, owner):
job.owner = None
class MemoryCatalog(catalog.Catalog):
def __init__(self):
@@ -185,14 +186,23 @@ class MemoryJobBoard(jobboard.JobBoard):
if date_functor(d):
yield j
def repost(self, job):
# Let people know a job is here
self._notify_posted(job)
self._event.set()
# And now that they are notified, reset for another posting.
self._event.clear()
@check_not_closed
def post(self, job):
with self._lock.acquire(read=False):
self._board.append((datetime.utcnow(), job))
# Ensure the job tracks that we posted it
job.posted_on.append(weakref.proxy(self))
# Let people know a job is here
self._notify_posted(job)
self._event.set()
# And now that they are notified, wait for another posting.
# And now that they are notified, reset for another posting.
self._event.clear()
@check_not_closed
@@ -219,6 +229,7 @@ class MemoryJobBoard(jobboard.JobBoard):
raise exc.InvalidStateException("Can not delete a job in "
"state %s" % (j.state))
self._board = [(d, j) for (d, j) in self._board if j != job]
self._notify_erased(job)
@check_not_closed
def posted_after(self, date_posted=None):