Создание API для выполнения постоянно работающего скрипта python - PullRequest
0 голосов
/ 23 марта 2020
import time
import flask

x = 0
app = flask.Flask(__name__)
app.config["DEBUG"] = True

def home():
    global x
    while 1:
        x = x + 1
        Sample_file5 = "Sample_File5.log"
        Sample_File5 = open(("C:\\Users\\xyz\\PycharmProjects\\ParsingLogFiles\\Output" + "\\" + Sample_file), "w")
        Sample_File5.write(str(x))
        print(str(x))
        time.sleep(1)
home()

@app.route('/', methods=['GET'])
def home1():
    flag = 1
    Sample_file5 = "Sample_File5.log"
    Sample_File1 = open(("C:\\Users\\xyz\\PycharmProjects\\ParsingLogFiles\\Output" + "\\" + Sample_file), "r")
    return str(x)

app.run()

Значение x записывается в файл непрерывно. Но когда я нажимаю на URL, данные в файле, который является увеличенным значением, должны быть загружены на веб-страницу. Может ли кто-нибудь помочь мне с этим ??

1 Ответ

0 голосов
/ 23 марта 2020

вам нужно, чтобы они были в отдельных процессах - домашняя функция работает вечно, поэтому запуск приложения никогда не начинается.

Вы можете выполнять многопроцессорные операции в Python, но проще всего для Начать с того, что вы могли бы просто иметь их как два отдельных скрипта - держать вещи flask отдельно и запускать их оба отдельно.

, чтобы получить значение из файла в маршруте home1, возможно попробуйте что-то вроде:

def get_latest_value(filename):
    with open(filename, "r") as sample_file:
        value = sample_file.read()
    return value

@app.route('/', methods=['GET'])
def home1():
    return get_latest_value("Sample_File5.log")

.

Вероятно, проще всего написать каждую часть в отдельной функции, которую вы можете протестировать, поэтому, возможно, напишите функцию, которая просто получает последнее значение из файла журнала и возвращает его. Они вы можете проверить только эту часть самостоятельно, не беспокоясь о flask. Если все работает хорошо, у вас есть очень простой flask маршрут, который вызывает эту функцию.

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