как это решение я использую сейчас:
У меня есть файл размером 1 МБ .dbf в том же каталоге всех моих .py-модулей. В main.py
у меня есть
import tools
В tool.py
код:
the_list_that_never_changes = loadDbf(file).variables['CNTYIDFP'].
Итак, the_list_that_never_changes
загружается только один раз и всегда в памяти готов к использованию... правильно?
Статические файлы хранятся отдельно от файлов приложений. Если вам нужно загрузить data.pkl
из main.py
, то не помечать его как статический файл, и он будет доступен main.py
как любой другой файл приложения.
Ссылка: Конфигурация приложения Обработчики для статических файлов.
Альтернатива: почему бы не определить информацию, хранящуюся в data.pkl
, как глобальную переменную в вашем источнике Python? Тогда вам не придется беспокоиться о чтении файла и десериализации его маринованного содержимого, и это будет немного быстрее. Это также упростит использование кеширования приложений - ваши данные будут загружены один раз, а затем будут кэшироваться для использования последующими запросами.
Поместите data.pkl
в тот же каталог с помощью main.py
и используйте что-то в этих строках:
pickle_path = os.path.join(os.path.dirname(__file__), 'data.pkl')
f = open(pickle_path)
data = pickle.load(f)
Не добавляйте data.pkl
в app.yaml
.
Если вы часто читаете эти данные, это может быть полезно для memcache после рассыпания. Затем вы можете прочитать его из memcache, который обычно быстрее, чем чтение файла с диска.