使用Requests_Threads和AsyncIO运行后退出

时间:2017-09-19 00:40:24

标签: python-3.x python-requests python-asyncio

我正在尝试Requests_Threads库,我已经得到了它以我想要的方式将数据返回给我的地方,但它给了我一个Process finished with exit code 0并在前进之前退出。有人使用这个库并想出来了吗?

from requests_threads import AsyncSession 
import asyncio

class apis:
    def __init__(self):
        self.session=AsyncSession()
        self.main_out=self.session.run(self.main)
        print('still alive')

    async def main(self):
        rs = []
        for _ in range(100):
            rs.append(await self.sub('thing'))

        return[ (x[0].json(),x[1]) for x in rs]

    async def sub(self,key):
        return  await self.session.get('http://httpbin.org/get'),key

1 个答案:

答案 0 :(得分:0)

所以,我最终得到了一个使用aiohttp的解决方案

1000使用标准请求需要花费2分4秒,使用aiohttp需要56秒,或者减少一点点超过54%。

import aiohttp
import asyncio
from datetime import datetime

class apis:
    def __init__(self):
        self.session=aiohttp.ClientSession()
        self.loop=asyncio.get_event_loop()
        self.main_out=self.loop.run_until_complete(self.main())

    async def main(self):
        rs = []
        for _ in range(1000):
            rs.append(await self.loop.create_task(self.sub('foo')))
        return rs

    async def sub(self,key):
        return  await self.session.get('http://httpbin.org/get'),key,datetime.now()