Djangoで同じモデルからModelFormとAdminでCreate画面を作成。
ModelForm
Admin
import asyncio import aiohttp @asyncio.coroutine def download(url): response = yield from aiohttp.request('GET', url) return (yield from response.read_and_close()) urls = ['http://www.yahoo.co.jp', 'http://www.google.co.jp'] loop = asyncio.get_event_loop() f = asyncio.wait([download(u) for u in urls]) r = loop.run_until_complete(f) for i in r[0]: print(i.result())asyncio.waitは複数のコルーチンを1つのFutureにまとめる
import gevent.monkey gevent.monkey.patch_socket() import urllib2 from lxml import html r = urllib2.urlopen('http://www.yahoo.co.jp') et = html.parse(r)上記のようなコードを実行するとhtml.parseで処理が帰ってこずフリーズすることがある。
import gevent.monkey gevent.monkey.patch_socket() import urllib2 from lxml import html from io import StringIO r = r = StringIO(urllib2.urlopen('http://www.yahoo.co.jp').read().decode('utf-8','replace')) et = html.parse(r)urlopenの戻り値を直接使わずにいったんStringIOにデータを格納してからhtml.parseを実行すると、理由はよくわからないがフリーズしなくなる。
#モデル #db.py db.define_table('post', Field('title'), Field('pub_date', 'datetime'), format = '%(title)s') #コントローラー #default.py def date(): rows = db(db.post.pub_date.year == 2014).select() return dict(rows=rows)このようなコードを書いて実行するとdb.post.pub_date.year == 2014がQueryを返さずboolを返していてエラーになっていた。
#モデル #db.py db.define_table('post', Field('title'), Field('pub_date', 'datetime'), format = '%(title)s') #コントローラー #default.py def date(): rows = db(db.post.pub_date.year() == 2014).select() return dict(rows=rows)yearではなくyear()にしないとQueryにならなかった。