Ответ 1
Существуют разные способы передачи данных между представлениями. На самом деле это совсем не так, что проблема передачи данных между двумя разными сценариями, и, конечно же, есть и некоторые концепции межпроцессного общения. Некоторые вещи, которые приходят на ум, -
- Запрос GET - первый запрос хитов view1- > отправка данных в браузер → переадресация браузера в view2
- Запрос POST - (как вы сказали) Тот же поток, что и выше, но подходит, когда задействовано больше данных
- Переменные сеанса Django - это самый простой для реализации
- Файлы cookie на стороне клиента. Может использоваться, но есть ограничения того, сколько данных можно сохранить.
- Общая память на уровне веб-сервера - сложно, но может быть сделано.
- API REST API. Если вы можете иметь автономный сервер, то этот сервер может использовать REST API для вызова представлений.
- Очереди сообщений. Опять же, если возможен автономный сервер, возможно, будут работать даже очереди сообщений. то есть первый вид (API) принимает запросы и помещает его в очередь, а другой процесс может отключать сообщения и удалять второй вид (другой API). Это отделит API первого и второго взглядов и, возможно, лучше справится с нагрузкой.
- Кэш. Возможно, кеш, такой как memcached, может выступать в роли медиатора. Но если кто-то идет по этому маршруту, лучше использовать сеансы Django, поскольку он скрывает множество деталей реализации, но если масштаб является проблемой, memcached или redis - хорошие варианты.
- Постоянное хранилище - хранить данные в некотором постоянном хранилище, таком как mysql. Это отделяет ваш запрос от участия (возможно, клиент, стоящий перед API) от обработки части, имея БД посередине.
- Хранилища NoSql - если скорость записи в другом порядке составляет сотни тысяч в секунду, то производительность MySql станет узким местом (есть способы обойти, настроив конфигурацию mysql, но это не так просто), Тогда рассмотрение NoSql DB может быть альтернативой. например: dynamoDB, Redis, HBase и т.д.
- Обработка потока - как Storm или AWS Kinesis может быть вариантом, если ваш прецедент - это вычисление в реальном времени. Фактически вы могли бы использовать AWS Lambda посередине в качестве серверного вычислительного модуля, который бы считывал и вызывал ваш второй API-интерфейс.
-
Запись данных в файл - тогда следующее представление может читать из этого файла (действительно уродливое). Это, вероятно, никогда не должно быть сделано, но здесь мы ставим здесь что-то, чего не следует делать.
Не могу больше думать. Будет обновлен, если я получу какой-либо. Надеюсь, это поможет в чем-то.