Я хочу написать и развернуть однопоточное приложение Flask/Gunicorn с одним процессом? Как я могу поддерживать постоянноPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я хочу написать и развернуть однопоточное приложение Flask/Gunicorn с одним процессом? Как я могу поддерживать постоянно

Сообщение Anonymous »

Обратите внимание: если вы видели подобный вопрос от меня на stackoverflow.com/beta/discussions, этот вопрос предназначен для (надеюсь) конкретного ответа, а не для более открытого обсуждения с ряд возможных ответов.
Я пишу приложение Flask, которое собираюсь запустить с Gunicorn. Это приложение должно поддерживать некоторое внутреннее состояние. В качестве аргумента предположим, что это внутреннее состояние так же просто, как хранилище значений ключа. Это может быть так же просто, как словарь Python, с веб-приложением, предоставляющим методы GET и POST для получения или обновления пар ключ-значение.
Чтобы поделиться этим состояние, я должен настроить Gunicorn для работы как один процесс. (В противном случае потребовался бы какой-то механизм для совместного использования состояния между процессами, а я не хочу это реализовывать.)
Я мог бы настроить его для работы с несколькими потоками. Но мне пришлось бы защищать структуру данных с помощью блокировок. (Опять же, я не хочу идти по этому пути. Это очень простой демонстрационный проект, и часть веб-приложения не является важной частью демонстрации.)
Из Из этого я делаю вывод, что лучший способ развернуть это — использовать Gunicorn, настроенный на использование одного процесса и одного потока. Это решает любые проблемы совместного использования данных и одновременного выполнения.
Чего я не понимаю, так это как мне создать общее состояние в приложении Flask?Я прочитал несколько источников, которые содержат противоречивую информацию. Некоторые источники утверждают, что это невозможно. Другие говорят, что объект flask.g можно использовать, но только в рамках одного запроса. (Я предполагаю, что это означает, что состояние будет создаваться и уничтожаться много раз за время существования приложения? В этом случае это явно не сработает.)
Вот пример кода. Как мне следует использовать состояние global_data в контексте запросов GET и POST?
from flask import Flask, request

app = Flask(__name__)

global_data = {} # ? how should I initialize this global state ?

@app.get('/get')
def get():
context = request.json
key = content.get('key')
return global_data[key]

@app.post('/put')
def put():
context = request.json
key = content.get('key')
value = content.get('value')
global_data[key] = value


Подробнее здесь: https://stackoverflow.com/questions/786 ... orn-applic
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»