Найти - Пользователи
Полная версия: Асинхронные web запросы
Начало » Python для новичков » Асинхронные web запросы
1 2
wegwgweg
Подскажите аналог библиотеки requests (или другой подобной), который умел бы делать запросы асинхронно.

P.S python3
Alen
wegwgweg
Подскажите аналог библиотеки requests (или другой подобной), который умел бы делать запросы асинхронно.

Ну скажем любой клиент из asyncio или requests + gevent

wegwgweg
Alen
Спасибо за ссылку.
Немогли бы вы ещё немного помочь, я с асиннхронной моделью выполнения плохо знаком, не можете показать небольшой пример как с использованием aiohttp запустить на пример получение 10 страниц?

P.S не пинайте сильно, если много прошу
GreyZmeem
import asyncio
import aiohttp
 
 
@asyncio.coroutine
def get(method, url, **kwargs):
    response = yield from aiohttp.request(method, url, **kwargs)
    body = yield from response.read()
    return body
 
 
@asyncio.coroutine
def main():
    tasks = [
        asyncio.async(get('GET', 'http://python.org')),
        asyncio.async(get('GET', 'http://python.su')),
        asyncio.async(get('GET', 'http://python.net')),
    ]
    done, pending = yield from asyncio.wait(tasks)
    for item in done:
        print(item.result())
 
 
if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
Alen
wegwgweg
Немогли бы вы ещё немного помочь, я с асиннхронной моделью выполнения плохо знаком, не можете показать небольшой пример как с использованием aiohttp запустить на пример получение 10 страниц?

GreyZmeem Уже ответил. А еще можно послушать и посмотреть.
wegwgweg
Alen
Да видел это видео, но он к сожалению не сильно углубляется при описании клиента. Там только общие примеры, которые есть в документации.
wegwgweg
Alen
А у вас нет какой- нибудь дельной ссылки, где объясняется принцип как пишется асинхронный код с помощью сопрограмм? Везде в основном пишут, что сопрограммы основаны на генераторах и на их основных свойствах, а подробностей нет почти не где. Очень хочу разобраться в этой теме, но пока не получается
GreyZmeem
Я почти не пишу асинхронный код, но когда начинал учить, очень помог guide по twisted (тогда еще asyncio не было), который описывает что такое reactor, deffered etc.
Тыц (есть также перевод: тыц)
Alen
wegwgweg
какой- нибудь дельной ссылки, где объясняется принцип как пишется асинхронный код с помощью сопрограмм? Везде в основном пишут, что сопрограммы основаны на генераторах и на их основных свойствах

Генераторы и сопрограммы реализуют всего лишь модель ленивых вычислений, что само по себе не даёт асинхронности, но позволяет её красиво реализовать. (Если хотите посмотреть как не красиво, можете посмотреть на колбеки(callback функции) в NodeJS и вообще в JavaScript или например Twisted) Вам же нужно смотреть event loop.

В двух словах: программы могут тормозить из-за двух вещей:
1. Много вычислительных операций (например большие вложенные циклы).
2. Ждать каких-либо событий.

Вот для второго случая и используют асинхронность, если одна “задача” чего-то ожидает, то управление передается другой, если та встает на ожидание, то третьей и так по кругу, это и называется event loop. Он и является основой для всех асинхронных фреймворков, везде может называться по разному reactor, ioloop еще как-то, но всё крутится вокруг этого понятия.

Ну а документация на twisted, tornado или asyncio вполне самодостаточна, ёё можно курить.



wegwgweg
Можете пояснить пожалуйста, что тут реализовано http://habrahabr.ru/post/243207/? На сколько я понимаю там показано как вручную реализовать асинхронное выполнение кода. Или я ошибаюсь?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB