Как нам аргумент Flask app.config внутри функции маршрута? - PullRequest
0 голосов
/ 30 марта 2020

Мое веб-приложение запускается изнутри функции, потому что я многопоточен с другими функциями (только 1 экземпляр flask), и у меня следующие вопросы: А. Как лучше всего передать очередь в приложение? B. Когда пройдено, как Очередь может быть использована в указанном c маршруте?

Вот соответствующая часть кода, которую я написал до сих пор, которая выдает ошибку «глобальное имя« очередь »не является определено "когда делается запрос к" /parser".

app = Flask(__name__)
q = Queue()
app.config['queue'] = q;

@app.route('/parser')
def Parser():
    arg = request.args.get('arg') #if key doesn't exist, returns None
    queue.put(arg)

def Run():
    app.run(debug=False, host='0.0.0.0')

if __name__ == '__main__':
    q = Queue()
    app.config['queue'] = q;
    thread = Thread(target = Run)
    thread.start()

Заранее спасибо:)

1 Ответ

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

Редактировать: добавлен пример кода, который может помочь

from flask import Flask
from threading import Thread
from queue import Queue

app = Flask(__name__)
q = Queue()
app.config['queue'] = q;
app.config['test'] = 'testing';

@app.route('/insert/<var>')
def Insert(var):
    q = app.config['queue']
    q.put(var)
    return "Ok"

@app.route('/pop')
def Get():
    q = app.config['queue']
    return q.get()


def Run():
    app.run(debug=False, host='0.0.0.0')

if __name__ == '__main__':
    thread = Thread(target = Run)
    thread.start()

Я почти уверен, что flask не поддерживает запуск одного и того же экземпляра приложения в нескольких потоках.

I есть ощущение, что это пример XY проблемы . Если вы развертываете на рабочем месте, на этой странице перечислены некоторые способы сделать это, чтобы обрабатывать несколько одновременных соединений.

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