Есть ли способ запустить скрипт Python с проектом Django? - PullRequest
0 голосов
/ 09 июля 2019

Я новичок в django и python. Я создал веб-приложение django, у меня также есть скрипт на python, который я должен запускать на серверной части веб-приложения в режиме реального времени (как будто он всегда должен проверять наличие новых обновлений и сообщать в Интернете о новых ответах от API с помощью генерация уведомлений). Я использую API IBM-Qradar, из которого мне нужно отобразить данные в веб-приложении.

У меня две проблемы 1) Есть ли способ, как я могу использовать приведенный ниже код Python с моим проектом Django, как я описал выше? 2) и использовать ответ API в формате json для хранения данных в базе данных MySQL непосредственно из переменной ответа.

Я мог только найти способы хранения данных в базе данных, используя формы, которые не требуются для моего проекта.

import json
import os
import sys

import importlib
sys.path.append(os.path.realpath('../modules'))
client_module = importlib.import_module('RestApiClient')
SampleUtilities = importlib.import_module('SampleUtilities')


def main():

    # First we have to create our client
    client = client_module.RestApiClient(version='9.0')

    # -------------------------------------------------------------------------
    # Basic 'GET'
    # In this example we'll be using the GET endpoint of siem/offenses without
    # any parameters. This will print absolutely everything it can find, every
    # parameter of every offense.

    # Send in the request
    SampleUtilities.pretty_print_request(client, 'siem/offenses', 'GET')
    response = client.call_api('siem/offenses', 'GET')

    # Check if the success code was returned to ensure the call to the API was
    # successful.
    if (response.code != 200):
        print('Failed to retrieve the list of offenses')
        SampleUtilities.pretty_print_response(response)
        sys.exit(1)

    # Since the previous call had no parameters and response has a lot of text,
    # we'll just print out the number of offenses
    response_body = json.loads(response.read().decode('utf-8'))
    print('Number of offenses retrieved: ' + str(len(response_body)))

    # -------------------------------------------------------------------------
    # Using the fields parameter with 'GET'
    # If you just print out the result of a call to the siem/offenses GET
    # endpoint there will be a lot of fields displayed which you have no
    # interest in. Here, the fields parameter will make sure the only the
    # fields you want are displayed for each offense.

    # Setting a variable for all the fields that are to be displayed
    fields = '''id%2Cstatus%2Cdescription%2Coffense_type%2Coffense_source%2Cmagnitude%2Csource_network%2Cdestination_networks%2Cassigned_to'''

    # Send in the request
    SampleUtilities.pretty_print_request(client, 'siem/offenses?fields='+fields, 'GET')
    response = client.call_api('siem/offenses?fields=' +fields, 'GET')


    # Once again, check the response code
    if (response.code != 200):
        print('Failed to retrieve list of offenses')
        SampleUtilities.pretty_print_response(response)
        sys.exit(1)

    # This time we will print out the data itself
    #SampleUtilities.pretty_print_response(response)

    response_body = json.loads(response.read().decode('utf-8'))
    print(response_body)
    print(type(response_body))
    for i in response_body:
        print(i)
        print("")

    for j in response_body:
        print(j['id'])
        print(j['status'])
        print(j['description'])

1 Ответ

0 голосов
/ 09 июля 2019

Вы можете написать свои собственные команды управления и вызывать их с помощью

myprojectpath/manage.py mycommand args ...

Документация здесь

Обратите внимание, что это необходимо, если вы хотите использовать модели Django. Существует множество настроек окружения, которые вам подойдут за кулисами. Если вы попытаетесь просто импортировать и использовать модели django в ванильном скрипте Python, они не будут работать правильно.

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