Как запустить скрипт Python в фоновом режиме при нажатии кнопки html с помощью фляги фреймворка

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

obj.spam = 'eggs'
name = 'spam'
getattr(obj, name)  # returns 'eggs'

0
задан Keerthi 23 March 2019 в 20:05
поделиться

1 ответ

Я не уверен, что ваша идея хорошая. Я опубликовал несколько небольших решений, но вы должны прочитать эту статью для лучшей практики.

1) Если вы хотите запустить внешний скрипт из колбы, вы можете использовать подпроцесс для запуска скрипта из командной строки.

@app.route('/run-script')
def run_script():
   result = subprocess.check_output("python main.py", shell=True)
   return render_template('results.html', **locals())

2) Если вы хотите запускать код Python в фоновом режиме без возврата, вы можете создать поток.

from threading import Thread

@app.route('/run-in-background')
def run_in_background():
    run_func()
    return redirect(url_for('.index'))

def run_func():
    data = { 'some': 'data', 'any': 'data' }
    thr = Thread(target=run_async_func, args=[app, data])
    thr.start()
    return thr

def run_async_func(app, data):
    with app.app_context():
    # Your working code here!
    example_module.do_somthing_with(data)

Не уверен, поможет ли это. Оба решения могут привести к путанице.

Вы должны прочитать документы по фляге. Функция app.config.from_pyfile оценивает данные конфигурации из кода Python. Это сильно отличается от вашего вопроса.

0
ответ дан Artist Unknown 23 March 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: