为了账号安全,请及时绑定邮箱和手机立即绑定

aiohttp异步请求页面,如何每请求x个页面,就存入一次数据库呢?

aiohttp异步请求页面,如何每请求x个页面,就存入一次数据库呢?

心有法竹 2019-02-17 18:03:36
以下是我的代码,功能是 请求一个网页,从网页提取出name,然后存入数据库, 我要请求的网页有10w, 我想实现,每抓50个页面。就自动存入数据库(也就是执行session.commit() ), 但是我完全不知道如何操作, 以前用request我还知道 增加一个变量,来控制循环次数, 但是换了 aiohttp我就摸不到头脑了,跪求大神指点一二 async def get(x): async with aiohttp.ClientSession() as session: url = f'https://httpbin.org/anything?name={x}' async with session.get(url) as resp: text1 = await resp.text() text1_json = json.loads(text1) return text1_json["args"] async def main1(x): new_name = await get(x) #请求网页,并提取出name # 存入数据 user11 = User_table(name=new_name, created=datetime.datetime.now()) # sqlalchemy的表 session.add(user11) # 数据存入缓存 pages = range(1, 100000) tasks = [asyncio.ensure_future(main1(x)) for x in pages] loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) session.commit() # 提交到数据库 print ("work done !!!!")
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

每次提交50个task,完成后继续提交五十个。

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 513 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信