Так что я связываюсь с 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"}
Хотел бы я опубликовать точные выходы, но это было бы довольно глупо с учетом меня, но с радостью следил, если у кого -то есть дополнительная информация, которая им нужна.
Так что я связываюсь с API LeetCode GraphQL и пытаюсь попасть в конечные точки компании, в следующем синхронном коде, который я написал, он работает отлично, а cookie также сохранен правильно. Он возвращает все данные, которые мне нужны: < /p> [code]def test_basic(query, slug): variables = { "skip": 0, "limit": 3, "favoriteSlug": slug,
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):
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"} [/code] Хотел бы я опубликовать точные выходы, но это было бы довольно глупо с учетом меня, но с радостью следил, если у кого -то есть дополнительная информация, которая им нужна.
Я пытаюсь аутентифицировать пользователя из Blazor, чтобы получить доступ к ресурсам в основном веб -API ASP.NET с использованием идентификации основной идентификации ASP.NET.
У меня есть два метода аутентификации: JWT и файлы cookie.
Когда я...
Конечная цель — отменить запрос на стороне сервера, если клиент превышает время ожидания.
Вот мой код конечной точки:
@routes.get('/ping')
async def handle_ping(_) -> web.Response:
try:
import time
import asyncio
for i in range(10):
await...
Конечная цель — отменить запрос на стороне сервера, если клиент превышает таймаут.
Код, связанный с запуском сервера:
def run_server_loop(
routes: web.RouteTableDef,
shutdown_state: ShutdownState,
logger: Logger,
*,
port: int,
periodic_callback:...