Nano Hash - криптовалюты, майнинг, программирование

celery sqlalchemy открывает другой сеанс (а не закрывает его) при каждом запросе?

Все. Я настроил сельдерей с помощью своего приложения Flask, и у меня есть вопрос, как сельдерей управляет сеансом sqlalchemy. Скажем, я запускаю свое приложение celery, делая это (используя этот фрагмент):

celery = make_celery(app)

#set up a test task
@celery.task(name='testcelery', ignore_result=True)
def test_celery():
    db_session.execute("""INSERT INTO [dbo].[testconstraint]
                      VALUES (1)
                   """)
    db_session.commit()

Теперь в моем main view.py из приложения Flask добавьте маршрут

@app.route('/testcelery', methods=['GET'])
def testcelery():
    tasks.test_celery.apply_async()
    return 'just test'

Все работает нормально, за исключением того, что каждый раз, когда я нажимаю /testcelery, он инициирует сеанс (я использую MS SQL SERVER) и не закрывает/удаляет его (если только я не использую KeyInterupt celery из командной строки). Это добавляет много сессий в Activity Monitor.

введите здесь описание изображения

Каждый из них показывает так:

введите здесь описание изображения

Я тестировал добавление db_session.close() или db_session.remove() в конце этой задачи сельдерея, но все еще не работает. Кто-нибудь знает, в чем может быть причина?

РЕДАКТИРОВАТЬ: вот мой движок и создание сеанса в database.py

engine = create_engine('connection string')
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

Ответы:


1

Где вы создаете и храните объект SQLAlchemy Engine? Механизм обрабатывает объединение соединений - если вы создаете механизм каждый раз, когда создаете сеанс, у вас может быть группа механизмов, каждый из которых содержит «пул» одного сеанса.

09.12.2014
  • У меня есть движок и сессия, созданные в файле database.py. Я добавил фрагмент кода в op. А соединения с базой данных создаются из другого кода, выполняя from .database import db_session. Это правильный способ сделать? 09.12.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..