Вопрос

Я строю пирамидное приложение, которое необходимо подавать карту плитки на веб -карту OpenLayers.

Tilestache - это сервер WMS Tile, который обслуживает нужные мне плитки, и я хочу получить к нему доступ в качестве представления в моем приложении Pyramid.

Само по себе, посещение URL Tilestache, www.exampletilestacheurl.com/LAYERNAME/0/0/0.png, отлично работает - он возвращает плитку должным образом.

В пирамиде я хочу обернуть приложение Tilestache в качестве представления, используя pyramid.wsgi.wsgiapp. Анкет Моя цель в том, что посещение www.mypyramidapp.com/tilestache/LAYERNAME/0/0/0.png будет работать так же, как приведенный выше пример URL Tilestache.

Я завернул приложение Tilestache, чтобы стать представлением:

from pyramid.wsgi import wsgiapp

@wsgiapp
def tileserver(environ, start_response):
    # Enable TileStache tile server
    import TileStache
    tile_app = TileStache.WSGITileServer('tilestache/tilestache.cfg', autoreload=False)
    return [tile_app]

И назначил маршрут для представления в myapp.__init__.main:

from tilestache import tileserver
config.add_view(tileserver, name='tilestache')
config.add_route('tilestache', '/tilestache')

Но когда я посещаю любой URL, начиная с www.mypyramidapp.com/tilestache/, это просто возвращается IndexError: list index out of range. Кто -нибудь знаком с тем, как работает WSGiapp?

Это было полезно?

Решение

Если Tile_app - это приложение WSGI, вам нужно вернуть результат, чтобы назвать его так ...

from pyramid.wsgi import wsgiapp

# Enable TileStache tile server
import TileStache
tile_app = TileStache.WSGITileServer('tilestache/tilestache.cfg', autoreload=False)

@wsgiapp
def tileserver(environ, start_response):

    return tile_app(environ, start_response)

Примечание. Я перенес создание приложения на уровень модуля, чтобы оно создавалось при импорте и не каждый раз, когда обрабатывается запрос. Это может быть не то поведение, которое вы ищете, но большую часть времени оно есть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top