Kay チームは Kay 1.1 をリリースしました! 松尾さん、Daskalou さん、末永さん、鈴木さんのヘルプに感謝しています。
Kay は Appengine 専用フレームワークです。基本的なデザインは Django フレームワークを基にしています。
Kay 1.1 は新しい機能が含まれています。 リリースノートをここにご覧できます 。 このページでダウンロードできます 。
Kay 1.1 の新しくて主要な機能を紹介します。
cron_only
Appengine の cron 機能のビューをセキュアとするデコレータが新しく追加されています。 cron_only
を使いますと、Appengine の cron システムしか叩けません。
@cron_only
def my_cron_view(request):
# ...
return response
ページネーション API
Kay 1.1 で、ビューで簡単にページネーションを実装できるため、ページネーション API を追加しました。
from kay.utils.paginator import Paginator, InvalidPage, EmptyPage
from kay.utils import render_to_response
def listing(request):
contact_list = Contacts.all()
paginator = Paginator(contact_list, 25) # Show 25 contacts per page
# Make sure page request is an int. If not, deliver first page.
try:
page = int(request.args.get('page', '1'))
except ValueError:
page = 1
# If page request (9999) is out of range, deliver last page of results.
try:
contacts = paginator.page(page)
except (EmptyPage, InvalidPage):
contacts = paginator.page(paginator.num_pages)
return render_to_response('list.html', {"contacts": contacts})
ページオブジェクトはテンプレートで、色な情報を表示できます。
{% for contact in contacts.object_list %}
{# Each "contact" is a Contact model object. #}
{{ contact.full_name|upper }}<br />
...
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if contacts.has_previous %}
<a href="?page={{ contacts.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
</span>
{% if contacts.has_next %}
<a href="?page={{ contacts.next_page_number }}">next</a>
{% endif %}
</span>
</div>
ページネーションAPI はできるだけ、データストアのRPCコールを減らすように設計しました。例えば、 num_pages
か count
をアクセスしないで、 start_index
や、 end_index
を使っても、 count() RPCコードをしない。
ページネーションAPIのドキュメントをここにご覧できます 。
ライブ設定
アプリケーションを Appengine にデプロイする時に、すべてのインスタンスを強制に落とすため、レータンシーが急に上がったり、アプリケーションが遅くなったりする場合があります。 ライブ設定は、アプリケーションをデプロイせずに、変更できるグローバル設定の仕組みです。ライブ設定を使えば、インスタンスが落ちないので、遅くなりません。
ライブ設定は、 Unicode キーと Unicode 値のペアで、 memcached と同じような API を用意していますが、 memcached と違って、早くて、データを永続する仕組みになっています。 プログラムで設定することもでき:
from kay.ext.live_settings import live_settings
value = live_settings.get("my.settings.key", "default_value")
live_settings.set("my.settings.key", "new-value")
カスタム管理画面でも、設定できます:
AppStatsMiddleware
Kay 1.1 では、新しい AppStatsMiddleware
が追加されています。このミドルウエアを
MIDDLEWARE_CLASSES
に追加するだけで、
Appstats
を有効にすることができます。
MIDDLEWARE_CLASSES = (
# ...
'kay.ext.appstats.middleware.AppStatsMiddleware',
# ...
)
AppStatsMiddleware
はライブ設定と連動することができて、 Appstats
をON・OFFすることがデプロイせずに設定できます。
Appstats エクステンションのドキュメントをここにご覧できます 。
EReporter
Kay 1.1 では、 kay.ext.ereporter
という拡張アプリケーションが追加されています。このアプリケーションはサイトで発生したエラーの内容を保存し、管理画面で表示する。そして、デイリーレポートも送信することができます。
Appengine SDK の
EReporter
に似ていますが、 Kay の ADMINS
とメール関連設定と連動します。
まとめ
Kay 1.1 では新しい機能がいくつかを追加されていて、Appengine デベロッパーの皆さんがもっと簡単にアプリケーションを作れると嬉しいです!
もちろん、フィードバックは大歓迎します。 Kay’s のプロジェクトページ を見てみてください。 バグ報告や、機能追加要望などを Issuesページ でお願いします。日本語も大丈夫で、日本人デベロッパーも対応します。 メーリングリスト. もありますので、もし、質問や問題があれば、まずメールを投げてください! これから、Kay 2.0 にも向けて考えていますので、大きい機能など、内部を改造するような要望があれば、いまがチャンスなので、ぜひ教えてください!
Kay を使っている皆さん、これからも、宜しくお願いします!