Я хотел бы включить асинхронные http-запросы в некоторый код, но у меня возникли проблемы при включении имени входа, предоставляющего идентификатор сеанса.Как правильно структурировать код anync, чтобы идентификатор сеанса передавался всем созданным сеансам?
У меня есть функция входа в систему, которая выдаст мне идентификатор сеанса:
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
Я думаю, что мне нужно передать куки от возврата функции входа в систему в асинхронных циклах.Правильно ли следующее:
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))
В этом примере я действительно беспокоюсь о том, чтобы дать своим сессиям информацию, необходимую для работы, поэтому это неполный пример.При этом, есть ли лучший способ сделать это?