如何在AIOHTTP ClientSession中正确使用厨师?

时间:2019-04-22 19:53:34

标签: python python-asyncio aiohttp

我想在某些代码中包含异步http请求,但是在合并提供会话ID的登录名时遇到了麻烦。构造Anync代码以便将会话ID传递到所有创建的会话的正确方法是什么?

我有一个登录功能,它将为我提供一个会话ID:

async def login(url, username, password):

    sso_url = host + "/sso/SSOSer"

    login_data = {}
    login_data["_ssoUser"] = username
    login_data["_ssoPass"] = password
    login_data["_action"] = "LOGIN"
    login_data["_fromLoginPage"] = "TRUE"
    login_data["_ssoOrigUrl"] = host + "/app/portal/logondone.htm"
    login_data["_serviceName"] = "SSOP"

    async with ClientSession() as session:
        response = await session.post(sso_url, data=login_data)

    return response

我认为我需要将cookie从登录功能的返回传递到异步循环会话。以下正确吗?


async def _main(url):
    s = await login(url=url, username='abc', password='123')
    cookies = s.cookies
    async with ClientSession(cookies=cookies) as session:
        etc. 
        etc.




url= 'http://someurl.net'
loop = asyncio.get_event_loop()
loop.run_until_complete(_main(url=url))

在此示例中,我真的很担心要为我的会话提供他们需要工作的信息,因此这是一个不完整的示例。话虽这么说,还有更好的方法吗?

0 个答案:

没有答案