def test__task_issue_retry_with_not_throw(self, scoped_app,
                                              celery_session_worker):
        with scoped_app as app:
            clear_locks(app)

            @celery_session_worker.app.task(base=Singleton, bind=True)
            def retry_task_not_throw(self, *args):
                backend = self.singleton_backend
                config = self.singleton_config
                assert len(backend.redis.keys(config.key_prefix + "*")) > 0
                if not backend.redis.get(config.key_prefix + "_retry"):
                    backend.redis.incr(config.key_prefix + "_retry", amount=1)
                    self.retry(countdown=1, throw=False)
                    return "from retry"
                assert len(backend.redis.keys(config.key_prefix + "*")) == 2
                backend.redis.incr(config.key_prefix + "_success", amount=1)
                return "from success"

            celery_session_worker.reload()
            task1 = retry_task_not_throw.apply_async(args=[1, 2, 3])
            time.sleep(5)  # Small delay for on_success
            # assert task1.get(timeout=10) == "from success"

            backend = retry_task_not_throw.singleton_backend
            config = retry_task_not_throw.singleton_config
            assert backend.redis.get(config.key_prefix + "_retry") == '1'
            assert backend.redis.get(config.key_prefix + "_success") is None
            backend.redis.delete(config.key_prefix + "_retry")
            assert not backend.redis.keys(config.key_prefix + "*")
            clear_locks(app)
Example #2
0
    def test__clear_locks(self, scoped_app):
        with scoped_app as app:

            @app.task(base=Singleton)
            def simple_task(*args):
                return args

            [simple_task.apply_async(args=[i]) for i in range(5)]
            clear_locks(app)

            backend = simple_task.singleton_backend
            config = simple_task.singleton_config

            assert not backend.redis.keys(config.key_prefix + "*")
Example #3
0
def clear_all_locks(**kwargs):
    clear_locks(celery_app)
def scoped_app(celery_app):
    try:
        yield celery_app
    finally:
        clear_locks(celery_app)