Вставьте JSON в Postgres как часть задачи сельдерея - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в Джанго и Сельдерее.

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

Я работаю над приложением Django. Со страницы администратора использует запросы (задания). Эти запросы будут отправлены в Redis. Сельдерей тогда будет опрашивать 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 db. results]

Теперь вот где я запутался.

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

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

Вот пример json, который получает вывод pytest.main

{"созданный": 1535570420.542123, "длительность": 215.14111948013306, «код выхода»: 1, «корень»: «/ test», «среда»: {«Python»: «3.6.6», «Платформа»: «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"}, "Плагины": {"xdist": "1.22.5", "метаданные": "1.7.0", "json-report": "0.7.0", "разветвленный": "0.2", "django": "3.3.3", "cov": "2.5.1", "сельдерей": "4.2.1"}}, "summary": {"пройдено": 34, "не выполнено": 7, "всего": 41}

1 Ответ

0 голосов
/ 31 августа 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...