AIOHTTP и Asyncio GraphQL Запрос заменяет session_id в cookie на другое значение и приводит к возвращению запроса толькоPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AIOHTTP и Asyncio GraphQL Запрос заменяет session_id в cookie на другое значение и приводит к возвращению запроса только

Сообщение Anonymous »

Так что я связываюсь с API LeetCode GraphQL и пытаюсь попасть в конечные точки компании, в следующем синхронном коде, который я написал, он работает отлично, а cookie также сохранен правильно. Он возвращает все данные, которые мне нужны: < /p>

Код: Выделить всё

def test_basic(query, slug):
variables = {
"skip": 0,
"limit": 3,
"favoriteSlug": slug,

}

try:
request = requests.post("https://leetcode.com/graphql", json={'query': query, 'variables': variables}, headers=HEADERS, cookies=COOKIE)
breakpoint()
print(request.url)
print(request.status_code)
print(request.text)
if request.status_code == 200:
return request.json()

except Exception as e:
print(f"Error: {e}")
return None
< /code>
Однако я стараюсь стать лучше в написании асинхронного кода, поэтому я решил загрузить эти запросы и сделать его более эффективным. Проблема здесь в том, что когда я печатаю ответ, он имеет измененные файлы cookie, однако, когда я печатаю ответ. Request_info () это правильные файлы cookie. Я действительно замешан в том, как request_info может быть правильным, но ответ содержит измененный session_id. Я даже опустил его до одного запроса, и он все еще меняет session_id? < /P>
async def fetch_one(session: aiohttp.ClientSession, favorite_slug: str):

await asyncio.sleep(random.uniform(DELAY_MIN, DELAY_MAX))

payload = {
"query": QUERY,
"variables": {
"favoriteSlug": favorite_slug,
"skip"        : 0,
"limit"       : 100,
"filtersV2"   : {"filterCombineType": "ALL"},
},
}

async with session.post(GRAPHQL, json=payload, headers=HEADERS, cookies=COOKIE) as response:
body = await response.json()

if "errors" in body:
raise RuntimeError(body["errors"])

return favorite_slug, body["data"]["favoriteQuestionList"]

async def worker(sem: asyncio.Semaphore,
session: aiohttp.ClientSession,
favorite_slug: str):
"""basically controls number of concurrent requests"""
async with sem:
slug, data = await fetch_one(session, favorite_slug)

out_file = OUTDIR / f"{slug}.json"
out_file.write_text(json.dumps(data, indent=2))
print(f"✓ {slug:3} questions")

async def main(companies: List[str]):
sem = asyncio.Semaphore(CONCURRENCY)

async with aiohttp.ClientSession(cookies=COOKIE, headers=HEADERS) as sess:
tasks = [
asyncio.create_task(worker(sem, sess, c + suf))
for c in companies
for suf in WINDOW_SUFFIXES.values()
]
await asyncio.gather(*tasks)
< /code>
Вот пакет cookie и заголовок, если вам интересно: < /p>
COOKIE  = {"csrftoken": csrftoken, "LEETCODE_SESSION": session_id}

HEADERS = {"x-csrftoken": csrftoken,
"Referer": "https://leetcode.com",
"Content-Type": "application/json"}
Хотел бы я опубликовать точные выходы, но это было бы довольно глупо с учетом меня, но с радостью следил, если у кого -то есть дополнительная информация, которая им нужна.

Подробнее здесь: https://stackoverflow.com/questions/796 ... with-anoth
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Установите программное название Cookie Session Session
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Cookie Cookie Cookie Cookie Core Identity ASP.NET хранится, но не разрешается - Blazor Web App
    Гость » » в форуме C#
    0 Ответы
    47 Просмотры
    Последнее сообщение Гость
  • Aiohttp: как получить данные (тело) на сервере aiohttp из Requests.get
    Anonymous » » в форуме Python
    0 Ответы
    73 Просмотры
    Последнее сообщение Anonymous
  • Сервер asyncio не отменяет запрос, даже если aiohttp.ClientSession превышает таймаут
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Сервер asyncio не отменяет запрос, даже если aiohttp.ClientSession превышает таймаут
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»