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にならなかった。