Как вывести список файлов в статическом каталоге?

Я играю с Google App Engine и Python и не могу перечислить файлы статического каталога. Ниже приведен код, который я сейчас использую.

app.yaml

- url: /data
  static_dir: data

Код Python для списка файлов

myFiles = []
for root, dirs, files in os.walk(os.path.join(os.path.dirname(__file__), 'data/') ):
    for name in files:
        full_name = os.path.join(root, name)
        myFiles.append('%s;%s\n' % (name, datetime.fromtimestamp(os.stat(full_name).st_mtime)))

Когда я запускаю этот код локально на своей машине, все в порядке. У меня есть скрипт Python в корне каталога, и он просматривает файлы в каталоге данных. Однако когда я загружаю и запускаю точно такой же код в GAE, он не работает. Мне кажется, что структура каталогов моего приложения не совсем точно воспроизводится в Google App Engine. Где статические файлы?

Спасибо!


person Martin    schedule 25.01.2009    source источник


Ответы (3)


https://developers.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Static_file_handlers

Они не там, где вы думаете, GAE помещает статический контент в GoogleFS, что эквивалентно CDN. Идея состоит в том, что статический контент предназначен для непосредственного обслуживания ваших пользователей, а не в качестве хранилища файлов, которым вы можете манипулировать. Кроме того, GAE имеет ограничение на размер файла в 1 КБ, и было бы сложно контролировать это правило, если бы вы могли манипулировать своим хранилищем статических файлов.

person David    schedule 25.01.2009

Вот проект, позволяющий просматривать статические файлы: http://code.google.com/p/appfilesbrowser/

А вот и обязательный список рецептов для appengine: http://appengine-cookbook.appspot.com/ (некоторое время назад я узнал об этом проекте здесь)

person Tiago    schedule 25.01.2009
comment
code.google.com/p/appfilesbrowser/issues/detail?id= 2 + наличие большего количества кода, чем то, что имеет отношение к вашему приложению, ограничивает ограничение файла в 1 КБ. - person David; 26.01.2009

Вы не можете программно получить доступ к файлам, загруженным как статический контент — они не устанавливаются на сервер вместе с вашим приложением, а обслуживаются напрямую. Если вам действительно нужен доступ к ним, вы можете удалить обработчик статических файлов и обслуживать их самостоятельно.

person Nick Johnson    schedule 25.01.2009