Можно ли использовать wsgiservice с Python 2.5 (Google App Engine)? - PullRequest
2 голосов
/ 03 июня 2011

Я хотел бы использовать библиотеку WsgiService для написания службы REST на Google App Engine (GAE).Две функции, которые мне нравятся больше всего, - это способ автоматического вывода определенного формата (JSON, XML, ...) в зависимости от имени файла, заканчивающегося в пути запроса.Также он может напрямую отображать части пути к переменным с помощью регулярных выражений.

В официальном учебнике используются декораторы классов, которые недоступны в Python 2.5, и поэтому GAE выдает недопустимое синтаксическое исключение,Вопрос переполнения стека Декораторы классов в Python 2.5? упоминают, что декораторы классов являются просто синтаксическим сахаром и могут быть заменены обратно совместимым кодом.Также в документации wsgiservice не упоминается, что Python 2.6 является строго обязательным.К сожалению, я не смог заменить декораторы классов, чтобы он работал на GAE.

Можно ли заменить декораторы классов в руководстве для работы с Python 2.5?Если нет, то есть ли какая-либо другая библиотека, которая обеспечивает вышеуказанную функциональность, будучи совместимой с GAE?

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

Я не использовал WsgiService, но декораторы в Python 2.6 на самом деле просто вызовы функций со специальным синтаксисом . Так что если вы видите следующий код:

@MyDecorator
def myfunction():
    mycode

Это эквивалентно этому:

def myfunction():
    mycode
myfunction = MyDecorator(myfunction)

Так что, если вы можете быть обеспокоены написанием всего своего кода в этом стиле, он все равно должен работать (при условии, что другой код соответствует Python 2.5).

Чтобы было понятно, что вы делаете, я бы, вероятно, поместил декоратор в комментарии выше, например:

# @MyDecorator

Редактировать: Если декоратор принимает аргументы, он должен вернуть функцию, и , что функция вызывается с обертываемой функцией:

@MyDecorator(arg1, arg2)
def myfunction():
    mycode

Эквивалентно этому:

def myfunction():
    mycode
myfunction = MyDecorator(arg1, arg2)(myfunction)
0 голосов
/ 03 июня 2011

Файл PKS-INFO WsgiService содержит следующую строку

Classifier: Programming Language :: Python :: 2.6

и поэтому не подходит GAE (Python 2.5).

Запрошенные функции могутбыть достигнутым с различными отображениями URL, как описано здесь: http://code.google.com/appengine/docs/python/tools/webapp/running.html#URL_Mappings

...