時間によって Task を積む queue を変える

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から直接呼べるらしいぞ。知らなかった恥ずかしい。

This entry was posted on Saturday, 17 September, 2011.

Tags: