У меня есть приложение для фляги, которое слушает некоторую работу. Процесс довольно длинный (скажем, 1 минута), и я бы не хотел обрабатывать два запроса одновременно.Колба, запросы на обработку 1 на 1
Я буду здорово, если однажды я получу запрос, я мог бы закрыть фляжку для порта и слушать снова, когда закончим. В качестве альтернативы я мог бы настроить семафор, но я не уверен, как работает колба одновременно.
Любые советы?
from flask import Flask, request
app = Flask(__name__)
@app.route("/",methods=['GET'])
def say_hi():
return "get not allowed"
@app.route("/",methods=['POST'])
def main_process():
# heavy process here to run alone
return "Done"
if __name__ == "__main__":
app.run(debug=True,host='0.0.0.0')
Как вы планируете на управление флягой? Через колбу напрямую или вы запускаете ее как модуль WSGI? –
Я использую модуль wsgi – mosh442
В этом случае это может быть немного сложнее. Сервер WSGI (в зависимости от конфигурации) может порождать несколько процессов параллельно, но блокировки Python работают только через потоки, а не через процессы. Вам нужно ввести общий ресурс, который вы можете заблокировать. Это может быть база данных, файл или разделяемая блокировка, например [named семафор] (http://stackoverflow.com/q/2798727). –