Вставьте json в postgres как часть задачи celery

Я новичок в Django и Celery.

высокий уровень:

Я работаю над приложением Django. Со страницы администратора пользователи будут отправлять запросы (вакансии). Эти запросы будут отправлены в Redis. Затем Celery опрашивает Redis и извлекает задание из очереди. После завершения задачи результаты будут сохранены в postgres.

Вот пример задачи, которая используется для запуска некоторых тестов через pytest.main ().

# task for running tests by marker 
def run_tests_mark(test_marker):
    os.chdir('/service/lib/tests')
    # only allow specific strings to be passed in by the user
    if test_marker not in ['smoke', 'regression']: # update as more tages are introduced to the project
        return 'You have entered an invalid term. Please use either smoke of regression.'
    # run pytest command with self contained reporting
    results = pytest.main(['-v', '--json-report', '-m', test_marker])
    # TODO: after tests run send json report to postgres

Код будет запускать тесты, но, как вы можете видеть по последнему комментарию, я хочу взять полученный .json.report и сохранить его в базе данных postgres [обратите внимание, что я использую помощник для получения фактического отчета, созданного results]

Вот где я запутался.

Нужно ли мне сначала создать модель на основе всех ключей в отчете json, который будет сгенерирован pytest?

Если да, то я бы использовал что-то вроде TestResultModel.objects.create(.....), чтобы затем вставить отчет в postgres?

Вот образец json, который выводит pytest.main

{"created": 1535570420.542123, "duration": 215.14111948013306, "exitcode": 1, "root": "/test", "environment": {"Python": "3.6.6", "Platform": "Linux-4.9.93-linuxkit-aufs-x86_64-with-debian-9.5", "Packages": {"pytest": "3.6.2", "py": "1.5.4", "pluggy": "0.6.0"}, "Plugins": {"xdist": "1.22.5", "metadata": "1.7.0", "json-report": "0.7.0", "forked": "0.2", "django": "3.3.3", "cov": "2.5.1", "celery": "4.2.1"}}, "summary": {"passed": 34, "failed": 7, "total": 41}

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
303
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Do I need to first create a model based on all the keys in the json report that is going to be generated by pytest?

В общем, да. Но это не похоже на реляционные данные, которые вы сохраняете в своей базе данных. Таким образом, вы можете использовать JSONField и вставить туда все за один раз. JSONField соответствует полям JSONB в postgresql, которые предназначены для хранения объектов json и позволяют искать, изменять эти объекты и т. д.

Вы также можете увидеть https://stackoverflow.com/a/32091771/267540

Большое спасибо за предложение. Я сосредоточу свои усилия на реализации этого.

Lombax 31.08.2018 14:27

Рад помочь

e4c5 31.08.2018 16:03

Другие вопросы по теме