Posted on 03 January, 2012

/_ah/start での処理に時間がかかると本来のURLでのcronが実行されない。instanceの立ち上げで数十秒かかる場合などはよくあるので困る。


1分前にダミーのcronを走らせておいてwarmupしておくのが得策かもしれない。


cron.yaml

cron:
- description: main
  url: /main-job
  schedule: every 1 hours synchronized
  timezone: Asia/Tokyo
  target: backend
- description: main-warmup
  url: /dummy
  schedule: every 1 hours from 00:59 to 23:59
  timezone: Asia/Tokyo
  target: backend

Posted on 12 November, 2011

WARNING:root:The HTTP_HOST environment variable was not set, but is required to determine the correct value for the `Task.target’ property. Please update your unit tests to specify a correct value for this environment variable.



以下の記述を追加したらWarningが出なくなった。


import os
os.environ['HTTP_HOST'] = 'localhost:8000'

何の意味があるのかは知らない。

Posted on 17 September, 2011

App Engine のリソース管理 – TaskQueue の設定



これらの応用として、時間によって Task を積む queue を変更すると、例えば夜間のみ Backends で Task を実行し、昼間は Frontend instance で Task を実行するなどのことが結構簡単にできます。



どうやるの?(´・ω・`)


Background work with the deferred library



deferred.defer(do_something_expensive, "Foobie bletch", 12, _countdown=30, _queue="myqueue")


あー、_queueって引数で指定するのね。


queue.yaml


queue:
- name: myqueue1
  rate: 5/s
  target: backend
- name: myqueue2
  rate: 5/s
  max_concurrent_requests: 1

で、時間で変えると。


if 0 <= hour < 12:
  deferred.defer(do_something, 'Good morning.', _queue='myqueue1')
else:
  deferred.defer(do_something, 'Good evening.', _queue='myqueue2')

追記


Cronから直接呼べるらしいぞ。知らなかった恥ずかしい。

Posted on 11 September, 2010

O-Kay-Blogという、Google App Engine/Pythonのフレームワークであるkay-framework上で動作するBlogを設置してみたのでその過程を記録しておきます。


Downloads – theokayblog – Project Hosting on Google Codeから直接tar.gzをダウンロードして展開した場合


ReadMeにある通りでほぼ上手くいきました。ハマリどころはsettings.pyに以下のコードを追記する必要がある、くらいです。


MIDDLEWARE_CLASSES = (
  'kay.auth.middleware.AuthenticationMiddleware',
)

ただ、このバージョンは少し古く、最新のバージョンを取得するためにはMercurialでソースを取得する必要があります。


Source Checkout – theokayblog – Project Hosting on Google Codeからソースを取得した場合


先程のReadMeの内容に加えて_generated_mediaフォルダ及び_media.yamlが追加されています。これらをコピーし、さらにsettings.pyの内容も大幅に変更されているので全部コピーします。新しいテーマとSyntaxHighlighterが追加されたようです。これでDeployすればappengine上で動作します。


カスタマイズ


ここからは個人的な好みを反映させていきます。


SyntaxHighlighterは重くて好きではないので外します。/blog/templates/themes/buzzappフォルダ内のlisting.htmlとpost.htmlから以下の記述を削除。


{{ compiled_css('syntax.css') }}
{{ compiled_js('syntax.js') }}
<script type="text/javascript">
  SyntaxHighlighter.config.clipboardSwf = '/media/syntax/clipboard.swf';
  SyntaxHighlighter.all();
</script>

AutoPagerizeとLDRizeに対応します。base.htmlの<div id="bd" role="main">の2行下を次のように変更。


<div class="yui-b hfeed autopagerize_page_element">

listing.htmlの該当箇所を次のように変更。


    <!-- Basic block -->
    <div class="block post-list post hentry">
        <div ...