Exemplo n.º 1
0
 def __init__(self, url_table, processor, statistics,
 concurrent=1):
     self._url_table = url_table
     self._processor = processor
     self._statistics = statistics
     self._worker_semaphore = AdjustableSemaphore(concurrent)
     self._done_event = toro.Event()
     self._num_worker_busy = 0
     self._exit_code = 0
     self._stopping = False
     self.stop_event = wpull.actor.Event()
Exemplo n.º 2
0
    def test_adjustable_semaphore(self):
        semaphore = AdjustableSemaphore(value=2)

        yield semaphore.acquire(
            deadline=datetime.timedelta(seconds=0.1))  # value = 1
        yield semaphore.acquire(
            deadline=datetime.timedelta(seconds=0.1))  # value = 2

        try:
            yield semaphore.acquire(deadline=datetime.timedelta(seconds=0.1))
        except toro.Timeout:
            pass
        else:
            self.fail()

        semaphore.set_max(3)
        self.assertEqual(3, semaphore.max)

        yield semaphore.acquire(
            deadline=datetime.timedelta(seconds=0.1))  # value = 3

        try:
            yield semaphore.acquire(deadline=datetime.timedelta(seconds=0.1))
        except toro.Timeout:
            pass
        else:
            self.fail()

        semaphore.set_max(1)
        self.assertEqual(1, semaphore.max)

        try:
            yield semaphore.acquire(deadline=datetime.timedelta(seconds=0.1))
        except toro.Timeout:
            pass
        else:
            self.fail()

        semaphore.release()  # value = 2

        try:
            yield semaphore.acquire(deadline=datetime.timedelta(seconds=0.1))
        except toro.Timeout:
            pass
        else:
            self.fail()

        semaphore.release()  # value = 1

        try:
            yield semaphore.acquire(deadline=datetime.timedelta(seconds=0.1))
        except toro.Timeout:
            pass
        else:
            self.fail()

        semaphore.release()  # value = 0

        yield semaphore.acquire(deadline=datetime.timedelta(seconds=0.1))

        semaphore.release()

        self.assertRaises(ValueError, semaphore.release)

        def set_neg_max():
            semaphore.set_max(-1)

        self.assertRaises(ValueError, set_neg_max)