2011年01月11日

google app engine, カスタムTaskQueueの生成方法。

GAEでテーブルのカウントを取ろうと思っている。

MySQLではselect countがあるのだが、GAEにはそんな便利なもんは無い!

一応あるっちゃある。
ただ、countがあまりにもでかい場合、30秒ルールでcountが無効にされてしまう。
なので、ModelCounterというテーブルに各テーブルの件数を記録していく。。。というタスクをTaskQueueに投げる。
Cronとかもったいないので、TaskQueueの処理の中で再帰的にTaskQueueに処理を投げるロジック。

こことかにも一応サンプルは書かれているのだが、どうやってカスタムTaskuQueueを作成するかどうか詳しく書いているところが無い。

まずqueue.yamlにtaskの設定を記述。

- name: tablecount
rate: 10/s
bucket_size: 20


ここで、俺はてっきりデプロイすれば勝手にタスクキューの設定が反映されるものと思っていたが、どうも違うっぽい。
手動でタスクキューの内容をアップデート

appcfg.py update_queue .

で、実際にタスクを登録する。

from google.appengine.api import taskqueue
taskqueue.add(queue_name='tablecount', url="/tablecountworker?kind_name=%s" % (kind_name), method="GET")


ハマりどころはappcfg.py update_queue .かな。
これを忘れるとExceptionが出る。
以上!
posted by 1.618 at 17:56| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2010年09月16日

Windows用改行コード"^M"を変換する

mysqlからcsvをダウンロードしてきた場合で、MacVimとかで閲覧すると、"^M"などと言う改行が入る場合がある。
Windows用の改行だそうだ。改行コードは"CR+LF"。

【解決法】
・改行コードの調べ方
例えば、foo.txtというファイルを調べたければ、Terminalを開いて次のようにする。

$ od -c foo.txt | less

表示される文字の中に\r\nが混じっているがあればWindows型の改行コード。
Vim上では"^M"と表示されているはず。

・改行コードの変え方
Unixのコマンドを使う。

* Windows -> Unix
$ tr -d \\r < windows.txt > unix.txt

俺の場合は以上でうまくいった。

参照リンク
改行コードの変換
ラベル:改行 UNIX
posted by 1.618 at 13:09| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2010年08月04日

eclipseでdjangoのプロジェクトを作成 その2

モデルを作成する。

・プロジェクト右クリック -> Django -> Create application
・polls -> OK

pollsというパッケージができる。このmodels.pyにエンティティーを追加していく。

class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()

setting.pyを編集。

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'DjangoProj2ForBlog.polls'
)

テーブルを確認。
python manage.py sql polls

BEGIN;
CREATE TABLE "polls_poll" (
"id" serial NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" timestamp with time zone NOT NULL
);
CREATE TABLE "polls_choice" (
"id" serial NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
"choice" varchar(200) NOT NULL,
"votes" integer NOT NULL
);
COMMIT;

なるものが出てきたらOK。

テーブルをDBに追加。
python manage.py syncdb

posted by 1.618 at 17:08| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

eclipseでdjangoのプロジェクトを作成 その1

Eclipseでdjangoのプロジェクトを作成し、サーバーを起動させるまでの一連の流れ。

pythonのダウンロード&インストール
eclipseのダウンロード&インストール
Pydevプラグインのダウンロード&インストール

ここまででハマったのならググる。w

・eclipse -> File -> New -> Project... -> Pydev -> Pydev Django Project
・ウィザードが立ち上がるので流れに沿って「Next」連打。
・Django Settingの所で「Django version:1.1」。
・「Database Engine:sqlite3」。

ここで「manage.py syncdb」やっても「manage.py startapp」やっても多分エラーが起きる。
どういうことか、↑でセットしたDBがセットされてない。(爆怒

raise ImproperlyConfigured("You haven't set the database ENGINE yet.")
django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE yet.

って感じで。
なので、setting.pyをマニュアルでセットしてやる。(ウィザード意味ねーじゃん!!ふざけんな!)

・'ENGINE': 'django.db.backends.sqlite3'

・'NAME': 'djangoprojforblogdb'

とりあえずサーバー起動。
・右クリック -> Run As -> Pydev: Django

多分
http://localhost:8000
でみれるはず。

次はモデルの追加。
posted by 1.618 at 11:10| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。