Я пишу API, который возвращает json в соответствии с запросами. Например: localhost/api/query?a=1&b=2
. Чтобы вернуть json, мне нужно сделать некоторые предварительные вычисления для вычисления значения, скажем, x
. Предварительный расчет занимает много времени (несколько сотен миллисекунд). Например, файл json возвращает значение x+a+b.
Когда запрос пользователя localhost/api/query?a=3&b=4
, x
будет высчитываться снова, и это пустая трата времени с x
не изменится для каких-либо запросов. Вопрос в том, как я могу сделать этот предварительный расчет x
для всех запросов (В реальном приложении x
не является значением, а сложным объектом, возвращаемым завернутым кодом C++).Как избежать повторных предварительных вычислений в представлении django
ответ
Если вы используете какой-то кеш (memcached, redis), вы можете его сохранить там. Вы можете попытаться сериализовать объект с помощью pickle, msgpack и т. Д. Это можно восстановить и отменить.
Вы можете добавить модель (с таблицей db), которая хранит значения для a, b и x. Затем для каждого запроса вы можете искать экземпляр с a и b и возвращать связанный x.
Спасибо. Но, кажется, сложно хранить обернутый объект в таблице данных, по крайней мере, я не знаю, как ... – tonny2v
Если это json-объект, вы можете сделать дампы (дамп в виде строки) в TextField в своих моделях/дб. – jcfollower
- 1. Сохраните данные на диск, чтобы избежать повторных вычислений
- 2. Как избежать ненужных вычислений?
- 3. Как избежать повторных тестов JUnit
- 4. Как избежать повторных действий в конвейере Rx
- 5. Как избежать строкового кода в представлении Django в этом случае?
- 6. Как избежать URL-адреса жесткого кода в представлении Django
- 7. Как я могу выразить это выражение Haskell, чтобы избежать повторных вычислений?
- 8. Django block повторных запросов
- 9. Как избежать повторных слов из HQL
- 10. Избегайте повторных вычислений в столбцах? SQL Server запрос
- 11. SQL Server упрощает длительные запросы с использованием повторных вычислений даты
- 12. Что такое хороший шаблон дизайна, чтобы избежать повторных вычислений или двойных запросов во время запроса?
- 13. Как реорганизовать одноэлементный класс и избежать повторных ошибок еще
- 14. избежать Блок переключателей в представлении
- 15. Как избежать отдельных предварительных фиксаций, установленных на всех машинах-разработчиках?
- 16. Как избежать использования getdate() в представлении SQL?
- 17. Как избежать html-сущностей в представлении CakePHP?
- 18. Умножение в представлении Django
- 19. Как избежать повторных структур данных в Code First?
- 20. Как избежать повторных кортежей в слайд-слайде Flink?
- 21. mpandroidchart - Как я могу избежать повторных значений в Y-оси?
- 22. Как перегруппировать команды в оболочку, чтобы избежать повторных перенаправления?
- 23. Как избежать повторных индексов в pandas DataFrame после concat?
- 24. override_settings в представлении Django
- 25. Подчеркивание/lodash, как избежать дублирования вычислений в методе `map`?
- 26. Использование инфраструктуры Django REST, как избежать выборки объекта как в сериализаторе, так и в представлении?
- 27. Формирование Django TimeField в представлении Django
- 28. Как избежать повторных значений, полученных из базы данных?
- 29. разметка процесса в представлении django
- 30. Запрос Mysql в представлении django
Я пробовал мариновать. Для простых объектов python это нормально, чтобы сериализовать его, а затем извлечь его путем десериализации. Тем не менее, объект - это класс C++, завернутый boost_python. В нем указано, что трассировка экземпляров «libNetwork.Network» не включена (http://www.boost.org/libs/python/doc/v2/pickle.html) – tonny2v
Я не знаю, какой сервер вы используете, но он Кажется, что этот объект должен быть создан один раз в процессе/потоке/независимо (помещать его в отдельный модуль, где вы его инициализируете) и разделяете между вызовами, но имейте в виду, что объект должен быть потокобезопасным. Если сервер основан на процессах (у нескольких рабочих - вроде пушки, каждый процесс и, возможно, каждый поток должен иметь свой собственный объект). Без деталей об объекте и о том, как он работает, мы мало можем вам помочь (извините) ... – hitripekac