psql соединения не закрываются после запуска задачи сельдерея - PullRequest
0 голосов
/ 05 марта 2020

У меня запущены следующие 3 фиктивных задания. Каждая задача завершается примерно за полсекунды, но я замечаю, что в базе данных всегда открыто 3 соединения. Почему соединения не закрываются, когда задачи заканчиваются sh?

Я также использовал pg_stat_activity, чтобы убедиться, что значение backend_start - это время, когда впервые начался удар.

def make_celery(_app):  # type: ignore
    _celery = Celery("bank_api", broker=config.BROKER_URL)
    _celery.conf.timezone = "America/Los_Angeles"

    class ContextTask(_celery.Task):  # type: ignore
        def __call__(self, *args, **kwargs):  # type: ignore
            with _app.app_context():
                return self.run(*args, **kwargs)

    _celery.Task = ContextTask
    return _celery


@celery.on_after_configure.connect
def setup_periodic_tasks(sender: Celery, **kwargs: Any) -> None:
    from very_good_banking import tasks

    app.logger.info("Setting up period celery tasks.")

    sender.add_periodic_task(60, tasks.foobar_task_1.s(), name="test 1")
    sender.add_periodic_task(60, tasks.foobar_task_2.s(), name="test 2")
    sender.add_periodic_task(60, tasks.foobar_task_3.s(), name="test 3")



@celery.task()
def foobar_task_1():  # ignore: type
    number = random.randint(1, 100)
    app.logger.info(f"foobar task 1 starting {number}")
    sync_institution_accounts(
        InstitutionConnection.query.get("f6a24c6a86dc4ba5b1190f3f865cd50a")
    )
    app.logger.info(f"foobar task 1 finishing {number}")


@celery.task()
def foobar_task_2():  # ignore: type
    number = random.randint(1, 100)
    app.logger.info(f"foobar task 2 starting {number}")
    sync_institution_accounts(
        InstitutionConnection.query.get("ea3cf5fe959b4a218135b9368ef9a44d")
    )
    app.logger.info(f"foobar task 2 finishing {number}")


@celery.task()
def foobar_task_3():  # ignore: type
    number = random.randint(1, 100)
    app.logger.info(f"foobar task 3 starting {number}")
    sync_institution_accounts(
        InstitutionConnection.query.get("e142c6568c5d44b1a3f3563dc56cf3a0")
    )
    app.logger.info(f"foobar task 3 finishing {number}")
...