Google App Engine: Java-версия отложенной библиотеки Python? - PullRequest
3 голосов
/ 13 декабря 2010

Кто-нибудь знает о java-версии отложенной библиотеки python?Или, может быть, идея о том, как его реализовать?

РЕДАКТИРОВАТЬ: движок приложения имеет http://code.google.com/appengine/articles/deferred.html,, но эта библиотека только для Python.Я ищу что-то подобное, но это работает с GAE / Java

Ответы [ 5 ]

3 голосов
/ 14 декабря 2010

Работа над Java-версией отложена, но ничего не выпущено.Поиск в архивах группы google-appengine-java может выявить некоторый пользовательский код, который реализует это.Имейте в виду, что он не такой аккуратный, как Python - вы должны объявить сериализуемый класс, который реализует определенный интерфейс, в то время как в Python почти любая функция или метод подойдет.

2 голосов
/ 01 апреля 2011
2 голосов
/ 13 декабря 2010

Отложенная библиотека, на которую вы ссылаетесь, использует API очереди задач в App Engine. API-интерфейс Task доступен в Java. Однако java как язык на самом деле не позволяет передавать функции / методы в качестве аргументов так, как это делает python. Следовательно, скорее всего, Java-версия отложенной библиотеки будет выглядеть не так хорошо, как Python.

Если бы вы создали его (предполагая, что кто-то не указывает нам на существующий), вы могли бы определить некоторый интерфейс, например Deferrable, и инкапсулировать действие, которое вы хотите отложить, в объект, который выполняет этот интерфейс. Затем вам потребуется реализовать обработчик, который может обрабатывать эти объекты, и настроить Queue для использования этого обработчика.

Сложная задача - сделать интерфейс Deferrable простым в использовании и синтаксически приятным, учитывая относительно низкий уровень динамичности Java по сравнению с python.

В качестве очень ограниченной реализации вы могли бы сказать, что Deferrable - это просто URL-адрес, который необходимо запустить. Тогда вашему отложенному интерфейсу нужен только один метод, который возвращает строку, и ваш обработчик может быть очень простым. ОТО, вы только что поняли сложность, где бы вы ни внедрили этот URL.

0 голосов
/ 01 мая 2014

Есть - JDeferred

JDeferred - это библиотека Java Deferred / Promise, похожая на отложенный объект JQuery.

// deferred object and promise
Deferred deferred = new DeferredObject();
Promise promise = deferred.promise();
promise.done(new DoneCallback() {
  public void onDone(Object result) {
    ...
  }
}).fail(new FailCallback() {
  public void onFail(Object rejection) {
    ...
  }
}).progress(new ProgressCallback() {
  public void onProgress(Object progress) {
    ...
  }
}).always(new AlwaysCallback() {
  public void onAlways(State state, Object result, Object rejection) {
    ...
  }
});

// with the reference to deferred object, you can then trigger actions/updates
deferred.resolve("done");
deferred.reject("oops");
deferred.progress("100%");
0 голосов
/ 13 декабря 2010

Не-а, это только для python, не раскрыл способ его реализации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...