Grequests Python - 100 HTTP запросов за 2 секунды

  Рет қаралды 36,055

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

Как быстро отправить много HTTP запросов в Python?
⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+ZFBRE5mlwdcyNGJh
В данном видео мы рассмотрим библиотеку Grequests от разработчиков всем известной основной библиотеки Requests, которая на данный момент работает синхронно. Grequests же наследует весь функционал Requests и добавляет к нему технологию gevent, что позволяет ему работать асинхронно.
В итоге скорость запросов возрастает примерно в 20 раз.
В этом видео мы рассмотрим возможности библиотеки, сравним с Requests и Aiohttp, рассмотрим хорошие и плохие практики во время работы с данной библиотекой и рассмотрим основные ошибки новичков.
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Поддержать криптовалютой: github.com/Zproger/donate
Тайм-коды:
0:00 - Вступление
0:28 - Плюсы Grequests. Почему она, а не aiohttp?
1:30 - За сколько секунд Requests делает 100 запросов?
2:40 - Установка Grequests
3:13 - Принцип работы Grequests
5:38 - За сколько секунд Grequests делает 100 запросов?
5:55 - Выводим status_code каждого запроса grequests
6:32 - Обработка ошибок в запросах grequests
7:29 - Grequests imap. Должен быть быстрее map, а на деле в 10 раз медленее
8:12 - Как правильно импортировать Grequests. О Monkey Patch
9:36 - Вся полезная информация в описании под видео

Пікірлер: 165
@domochevsky4703
@domochevsky4703 2 жыл бұрын
Отлично, я под каждым видосом прошу бахнуть серию видосов по асинхронщине! И вот - начало положено. Спс, бро, за годный контент.
@zproger
@zproger 2 жыл бұрын
Рад что помогает Да, начало положено :)))
@artembagachkov933
@artembagachkov933 2 жыл бұрын
Ничено себе так, более чём в 20 раз ускорил. У тебя ролики такие разнообразные, что скоро будут ответы по всем вопросам по Python :D
@zproger
@zproger 2 жыл бұрын
Благодарю :))))
@irwe3514
@irwe3514 2 жыл бұрын
Полезно, спасибо что делаешь ролики по таким темам
@zproger
@zproger 2 жыл бұрын
Благодарю за поддержку!
@night_niker
@night_niker 2 жыл бұрын
Спасибо за твой труд! Благодаря мини-курсу по парсингу написал курсач))) канал в источниках указал в знак благодарности 😙
@zproger
@zproger 2 жыл бұрын
Круто, рад что помогло
@mr.6932
@mr.6932 2 жыл бұрын
Наткнулся на твой канал около месяца назад, материал подаешь очень хорошо, все понятно ! Продолжай в том же духе с меня лайки, с тебя видео ! :)
@zproger
@zproger 2 жыл бұрын
Договорились :)
@ANUARKA
@ANUARKA 2 жыл бұрын
Оцени мой репчик
@ivanokkekes8370
@ivanokkekes8370 Жыл бұрын
Это так спасло меня! Я уже думал разбираться в асинхронности но это grequests очень прост и эффективный! Спасибо мой гуру
@mylife-ej8et
@mylife-ej8et 2 жыл бұрын
Продолжай снимать видосы, у тебя хороший и разнообразный контент
@zproger
@zproger 2 жыл бұрын
Благодарю, буду продолжать
@A-R-M_009
@A-R-M_009 2 жыл бұрын
Спасибо за Твой труд! Было полезно.
@zproger
@zproger 2 жыл бұрын
Рад что понравилось :)
@asemkrsk
@asemkrsk 2 жыл бұрын
не прокатило использовать с headers["X-Token-API"], в отличии от обычного request`a на котором работает но медленно, знает кто решение?
@konstantinvoropaev2623
@konstantinvoropaev2623 2 жыл бұрын
Я не лез в код grequests но выглядит, как событийный цикл где-то внутри grrquests, что-бы не прибегать к асинку. Стоит в том числе отметить, что подобная архитектура (отправлять пачку запросов одновременно) не сильно востребована в вебе, за исключением скрапинга (да и в скрапинге тоже, со всеми осторожностями и огрничениями по времени и кол-ву запросов). В Питоновском беке чаще востребованы асинхронные запросы, чем пакеты по 100 запросов. Описанная вами архитектура кстати очень похожа (map же) на threading/multiprocessing.Pool, пока весь пакет не завершиться, то ответа не получишь, а интерактивный режим - imap, как если бы я в функциях для пула писал функционал сохранения результата. То есть я конечно вижу, в каких ситуациях востребована пакетная обработка запросов, но это конечно весьма нишевая функция получилась. Кстати, если семантика aiohttp не нравится, попробуйте httpx, он близок к requests по семантике и умеет работать в обоих режимах (синк/асинк)
@rooniemosel4744
@rooniemosel4744 2 жыл бұрын
Ты умен. Как сделать скрипт, который сможет отправлять максимально много запросов на сервер, и настраивался бы он из веб-расширения.
@ivankondrashkin
@ivankondrashkin 2 жыл бұрын
а вот множество запросов вот полезно если делаешь web hook server какой либо
@armatofik885
@armatofik885 2 жыл бұрын
Бывает на бэкенде полезно отправлять пачку запросов в микросервисной архитектуре, когда умный микросервис составляет ответ для клиента, в котором содержатся данные из множества микросервисов
@orest_savitskyi
@orest_savitskyi Жыл бұрын
Рассылка сообщений пользователям в телеграм боте
@todrgor
@todrgor 2 жыл бұрын
Спасибо, побольше бы такого интересного
@zproger
@zproger 2 жыл бұрын
Буду стараться
@user-dq5yx3cq3f
@user-dq5yx3cq3f Жыл бұрын
Ну круто же ! Спасибо
@ivanfeast1548
@ivanfeast1548 2 жыл бұрын
Четко, спасибо!
@zproger
@zproger 2 жыл бұрын
Рад что понравилось
@MR-gz7pl
@MR-gz7pl 2 жыл бұрын
Круто) спс за твои видео
@zproger
@zproger 2 жыл бұрын
Рад что понравилось :))
@renatshaym
@renatshaym Жыл бұрын
А что лучше, быстрее и эффективнее использовать: requests-html или grequests? В requests-html, как я знаю, есть ассинхронный подход и вроде как тоже можно много запросов посылать?
@goshaposhlyy
@goshaposhlyy 2 жыл бұрын
Спасибо за ценные знания
@zproger
@zproger 2 жыл бұрын
Рад что принес пользу!
@MadMike93
@MadMike93 2 жыл бұрын
Спасибо)) не знал)) надо будет потыкать))
@zproger
@zproger 2 жыл бұрын
Да, прикольный инструмент)
@user-hr5oi7ix5g
@user-hr5oi7ix5g 2 жыл бұрын
Очень круто и информативно !!! А главное теперь все работает намного быстрее :)
@zproger
@zproger 2 жыл бұрын
Это хорошо :)
@pixel7139
@pixel7139 2 жыл бұрын
коммент в поддержку) супер)
@zproger
@zproger 2 жыл бұрын
благодарю!
@orest_savitskyi
@orest_savitskyi Жыл бұрын
Интересно если сравнить тот же threading на 100 потоков с обычным request и Grequests, какой будет итоговая разница в скорости выполнения
@grisha_KAPTOHKA
@grisha_KAPTOHKA 11 ай бұрын
не будет, автор сказал, что если использовать потоки, то чудо не свершится
@takiekakmi7532
@takiekakmi7532 Жыл бұрын
Интересненько) хотя, конкретно для себя, я вижу только применение в нагрузочном тестировании api с тредами
@zproger
@zproger Жыл бұрын
можно и так
@okeygoogle3188
@okeygoogle3188 2 жыл бұрын
а как-же requests с использованием Session?
@alanchickk
@alanchickk 2 жыл бұрын
Как в grequests отправлять куки, заголовки, данные?
@Alex-uh6qh
@Alex-uh6qh 2 жыл бұрын
1:48 домен gac...) Хорошая опечатка, dungeon master одобряет
@zproger
@zproger 2 жыл бұрын
Ага)
@gapchannelAi
@gapchannelAi 2 жыл бұрын
Крутой ролик
@zproger
@zproger 2 жыл бұрын
Благодарю!
@rucat284
@rucat284 2 жыл бұрын
А как использовать proxy?
@develper2
@develper2 2 жыл бұрын
Наконец будет fast requests
@zproger
@zproger 2 жыл бұрын
Да)
@dmitrium12
@dmitrium12 2 жыл бұрын
есть-ли смысл использовать Grequests для 1 запроса? и что за линукс ты используешь?
@zproger
@zproger 2 жыл бұрын
смысла нет. Дистрибутив - Zorin OS.
@blackcatdevel0per
@blackcatdevel0per 7 ай бұрын
Он работает на питоновском map?
@theAKIRAband
@theAKIRAband 2 жыл бұрын
Воу воу) палехче)
@zproger
@zproger 2 жыл бұрын
:))
@predatel_rodini
@predatel_rodini 2 жыл бұрын
Чётко
@zproger
@zproger 2 жыл бұрын
Спасибо!
@user-jh7jc3qe2s
@user-jh7jc3qe2s 2 жыл бұрын
Полезный пакет, будем пользоваться
@zproger
@zproger 2 жыл бұрын
:)
@vlatterran
@vlatterran 2 жыл бұрын
Мне понадобилось 28 строк кода, чтобы очень условно, но повторить данный функционал через, как мне кажется, более логичное оборачивание aiohttp в синхронный клиент. И делал я это в метро на телефоне.
@zproger
@zproger 2 жыл бұрын
Интересно :D Некоторые даже в метро на телефоне кодят
@evgeniisharaborin8071
@evgeniisharaborin8071 Жыл бұрын
А что быстрее httpx или grequest?
@rucat284
@rucat284 2 жыл бұрын
а как получать response.text мне пишет что нет такого
@zproger
@zproger 2 жыл бұрын
Он же возвращает список насколько я помню, нужно сначала обратиться к индексу, чтобы получить объект grequests
@Juravliik
@Juravliik 2 жыл бұрын
чётко
@zproger
@zproger 2 жыл бұрын
Благодарю
@azamtoiri
@azamtoiri 2 жыл бұрын
Объясните пожалуйста, для чего нужны запросы? Если можно приведите пример я так быстрее понимаю
@zproger
@zproger 2 жыл бұрын
На канале есть 2 курса по парсингу, там максимально понятно будет :)
@CalmVideo
@CalmVideo 2 жыл бұрын
Очень полезное видео! Можешь сделать видео, как защищаться от бана сайта по ip, у меня даже впн не робит, почему-то
@CalmVideo
@CalmVideo 2 жыл бұрын
Про парсинг
@tox_im3335
@tox_im3335 2 жыл бұрын
@@CalmVideo не шарю точно но возможно бан не по IP а по Mac адресу
@user-ok9tp5lx6n
@user-ok9tp5lx6n Жыл бұрын
Спасибо
@zproger
@zproger Жыл бұрын
😉
@takotofucus4383
@takotofucus4383 2 жыл бұрын
Я конечно покажусь душнилой, но не странно ли замерять скорость imap когда у тебя есть вывод на экран? Ведь в первом случае вывод сначала ты не сделал. Понятное дело что скорость бы увеличилась не сильно, но все же print мог разительно растянуть время выполнения программы.
@zproger
@zproger 2 жыл бұрын
Я только после этого комментария вспомнил что я print в первом примере не указывал... Тогда да, скорость будет значительно отличаться, надо бы перепроверить imap, возможно он действительно быстрее :)
@user-ts6wk3mu2l
@user-ts6wk3mu2l 2 жыл бұрын
А что за ось на видео?
@zproger
@zproger 2 жыл бұрын
Zorin Os
@arew8521
@arew8521 2 жыл бұрын
Блин, а как использовать grequest с bs4? Если кто-то знает подскажите, плз. Очень надо
@zproger
@zproger 2 жыл бұрын
Просто получить ответы отдельно и уже их использовать вместе с bs4
@arew8521
@arew8521 2 жыл бұрын
@@zproger спасибо! :)
@Didar.Kussain
@Didar.Kussain 2 жыл бұрын
👍
@zproger
@zproger 2 жыл бұрын
:)
@user-ww9zu6zq2p
@user-ww9zu6zq2p 2 жыл бұрын
Классный модуль, рад что нашел у тебя данное видео, но к сожалению с помощью grequests после нескольких запросов выдает ошибку 429(too many requests), с помощью imap ошибки нет, но из-за этого скорость падает в 10 раз. Можно решить проблему с помощью time.sleep, но тогда это все похоже больше на костиль и скорость падает раз в 5.
@orest_savitskyi
@orest_savitskyi Жыл бұрын
Скорее всего на вами запрашиваемом сайте есть определенного рода защита от условно dos атаки, ограничение на количество запросов в секунду к примеру с одного IP. Соответсвенно нужно искать обходные решения на подобие использования прокси
@user-nx7cq1wy3f
@user-nx7cq1wy3f 2 ай бұрын
GIL так то не блокируют I/O задачи, так как пока ожидается ответ от сервера, то GIL освобождается
@zzzahon8519
@zzzahon8519 Жыл бұрын
Обычно есть проблема сделать рейт лимит)) потому что у сайтов ограничение на количество запросов, иначе они просто блочат
@rebuilderowner78673
@rebuilderowner78673 3 ай бұрын
Рандомный прокси вешаешь на каждый запрос)
@karandalliik
@karandalliik Жыл бұрын
Классно. Прям щас нужно код в 10 раз минимум ускорить!! А по поводу порядка импорта grequests и requests - странно как то; ведь grequests берет библиотеку requests из папки venv или, возможно, изнутри себя и содержит определенную версию requests, а сама отдельная reqursts может быть любой версии. Да и обращение ведь происходит к методам через имя библиотеки. Переопределения тут никакого и не будет. В любом случае, сразу за тест. Очень нужно. Спасибо)
@radikgalliamov
@radikgalliamov 2 жыл бұрын
Было бы неплохо написать mvp тест для api, просмотры будут)
@zproger
@zproger 2 жыл бұрын
В плане с тестом через этот инструмент?
@radikgalliamov
@radikgalliamov 2 жыл бұрын
@@zproger Лучше наверное через реквест, на ваш выбор
@user-so4lz3si3r
@user-so4lz3si3r Жыл бұрын
Лично я использую модуль threading
@zombiecarbo4043
@zombiecarbo4043 2 жыл бұрын
Привет у меня такой вопрос во время когда я записываю команды в пайтон и допускаю ошибку я не могу стереть тот или иной символ что делать в такой ситуации?
@MrDenChannel
@MrDenChannel Жыл бұрын
А не подскажешь, что за тема PyCharm у тебя?
@zproger
@zproger Жыл бұрын
Github Dark
@n1ret
@n1ret 2 жыл бұрын
что возвращает grequest.get?
@zproger
@zproger 2 жыл бұрын
Объект grequests :)
@n1ret
@n1ret 2 жыл бұрын
@@zproger тоесть он сам по себе не делает обращение к сайту?
@Happ1ness
@Happ1ness 2 жыл бұрын
Альтернативное название ролика: "Делаем дудосер на python"
@zproger
@zproger 2 жыл бұрын
Не совсем :))) Тут всё таки запросы а не ддос
@Happ1ness
@Happ1ness 2 жыл бұрын
@@zproger а частые запросы на сервер, разве не считаются ддосом?)
@veleg
@veleg 2 жыл бұрын
@@Happ1ness нет
@Happ1ness
@Happ1ness Жыл бұрын
@@veleg как раз считаются. Прикинь ты поставишь парсить 100 страниц. Вот тебе и 100 запросов в один момент) Чем не дудос?
@illyamosiichuk670
@illyamosiichuk670 2 жыл бұрын
Го инструмент для дос-атак, чисто в научных целях)
@zproger
@zproger 2 жыл бұрын
Ютуб такое не любит :)
@archyt88
@archyt88 2 жыл бұрын
wrk , загугли)
@RenderDragon
@RenderDragon 2 жыл бұрын
@@zproger а мы ему не скажем
@jackmoral9127
@jackmoral9127 2 жыл бұрын
фиг знает у меня httpx 2000+ запросов в секунду шлет нагрузив при этом только 1 логическое ядро.
@zproger
@zproger 2 жыл бұрын
httpx тоже крутой)
@MrOGWalk
@MrOGWalk 2 жыл бұрын
А если сделать многоядерный ассинхронный парсер, такое возможно?) Допустим 8 ядер полностью нагрузить, и получить 16к запросов в секунду?
@chinchita5532
@chinchita5532 2 жыл бұрын
Это просто ассинхронная обёртка на request, в двух словах
@zproger
@zproger 2 жыл бұрын
Ага)
@IvanTokarev-dp3ju
@IvanTokarev-dp3ju 2 жыл бұрын
Астрологи объявили неделю мамкиных дудосеров
@zproger
@zproger 2 жыл бұрын
страшно
@b8b
@b8b 2 жыл бұрын
Очень страшно
@b8b
@b8b 2 жыл бұрын
Интересно если аналог этой штуки на php
@lexlex-nc7bq
@lexlex-nc7bq 2 жыл бұрын
grequests - круто, конечно но почему не aiohttp ?
@zproger
@zproger 2 жыл бұрын
В видео говорил почему не aiohttp =)
@Rizz_The_One
@Rizz_The_One Жыл бұрын
Для чего это нужно?)
@nosaze
@nosaze Жыл бұрын
мне кажется, или плохие люди будут делать dos и ddos атаки через такие скрипты :|
@zproger
@zproger Жыл бұрын
Вряд ли) Для таких атак надо знать побольше, чем просто import grequests)
@awdawdawdbfw
@awdawdawdbfw 2 жыл бұрын
Получился бы тот же результат, если бы делал это же самое в 40-50 потоков обычным реквестом
@zproger
@zproger 2 жыл бұрын
Раньше тестировал с потоками и вроде как это не ускоряло выполнение, связано с тем, что в Python используется GIL. Когда нужно сделать выполнение параллельным обычно использую multiprocessing.
@awdawdawdbfw
@awdawdawdbfw 2 жыл бұрын
@@zproger у меня есть проекты с подобной реализацией, можно добиться 150-200 запросов в секунду с помощью потоков. Как по мне асинхронность сильно переоценена в этом плане, т.к. там суть ровно такая же, пока выполняется один, скажем так поток в асинхронности, все остальные заблокированы, пока не будет IO операции
@user-bk8wg7hk2b
@user-bk8wg7hk2b 2 жыл бұрын
@@awdawdawdbfw Ага, только в случае с асинхронностью ты не будешь занимать все потоки процессора.. но это же не важно, правильно?)
@user-jz9jv9nr2n
@user-jz9jv9nr2n Жыл бұрын
У iohttp дока так себе
@zproger
@zproger Жыл бұрын
Вроде неплохая =)
@user-jz9jv9nr2n
@user-jz9jv9nr2n Жыл бұрын
@@zproger на любителя)
@finalapproach1254
@finalapproach1254 2 жыл бұрын
["url"] * 100
@zproger
@zproger 2 жыл бұрын
Можно и так =)
@lev8569
@lev8569 2 жыл бұрын
хотел сам задушнить, но ты был первее)
@luckytima2315
@luckytima2315 2 жыл бұрын
все еще zorin ))
@zproger
@zproger 2 жыл бұрын
Да)
@Juravliik
@Juravliik 2 жыл бұрын
а зачем нужно делать запросы на сайт?)
@user-hb1ug2fs3o
@user-hb1ug2fs3o 2 жыл бұрын
Для парсинга, для досс атак и по мелочи
@zproger
@zproger 2 жыл бұрын
Автоматизация действий на сайте, работа с API, парсинг. На самом деле много чего можно сделать, на канале целых 2 курса по парсингу, в которых подробно рассказывается об этом.
@Juravliik
@Juravliik 2 жыл бұрын
@@zproger спасибо, посмотрю.
@Juravliik
@Juravliik 2 жыл бұрын
@@user-hb1ug2fs3o спасибо)
@archyt88
@archyt88 2 жыл бұрын
Интересно куда были отправлены 100 тысяч запросов? XD Я ни на что не намекаю..)
@zproger
@zproger 2 жыл бұрын
xD
@maldok4087
@maldok4087 Жыл бұрын
Если честно мне кажется можно сделать бомбер, не так ли?
@lmaootakedh
@lmaootakedh Жыл бұрын
grequests.map - это метод класса grequests а не функция
@Garry_Li
@Garry_Li 2 жыл бұрын
4:51 что за кринж, по твоему если надо отправить 100000 запросов на один адрес то надо создать массив из 100000 строк? Это дичь какая-то, если этот гресквест только так работает то в топку его
@zproger
@zproger 2 жыл бұрын
Да, он так работает, потому что потом всё это передается в map, возможно есть и другие способы, но я показывал на примере документации
@dmitryakol2535
@dmitryakol2535 2 жыл бұрын
100 запросов в секунду? Может быть 100 000 https запросов в секунду? Тут да, нужно подумать. Как нужно говнокодить, что бы 100 запросов в секунду сервак отдать не мог?
@maximpotrebko9010
@maximpotrebko9010 2 жыл бұрын
что это за редактор? или это какая-то кастомная тема PyCharm'a?
@zproger
@zproger 2 жыл бұрын
Обычный Pycharm с плагинами, на канале есть видео как сделать такой же интерфейс в Pycharm
@user-zx9el2ld7g
@user-zx9el2ld7g 2 жыл бұрын
А aiohttp покинул чат?)
@zproger
@zproger 2 жыл бұрын
Сейчас да, но скоро вступит в чат и о нем будет отдельное видео
@omashune5546
@omashune5546 2 жыл бұрын
@@zproger о-о-о, будем ждать, будем ждать!
@MasterSergius
@MasterSergius 2 жыл бұрын
Заюзал grequest, получил бан от гугла
@zproger
@zproger 2 жыл бұрын
тоже самое
@Garry_Li
@Garry_Li 2 жыл бұрын
9:22 неужели питон такой тупой язык где нельзя явно задать какую библиотеку использовать?
@zproger
@zproger 2 жыл бұрын
Конечно можно, тут дело не в этом, просто grequests пропатчит в памяти requests и он будет идентичный, тогда без разницы какую либу использовать, поведение будет одинаковое. Это не особенности языка, просто monkey patching создает такие костыли.
@ternick
@ternick 2 жыл бұрын
На сколько же тупо было сравнивать синхронный requests и grequests, если сам сказал, что 2 асинхронный. Сравнил бы скорость aiohttp и grequests. Бесполезное видео, сам собрал никому не нужную статистику, сам погладил себя по головке и ушёл =/ Так же создавать массив из 100 ссылок, которые одинаковые так же тупо.
@zproger
@zproger 2 жыл бұрын
Потому что разница синхронного и асинхронного подхода всегда имеет значение. Никто никого не гладил, если бы я не сравнил скорость, Вы бы в комментариях написали что надо было её сравнить) А список на 100 ссылок создается не просто так, почитайте документацию Grequests, он работает по такому принципу, это не я придумал.
@ternick
@ternick 2 жыл бұрын
@@zproger Так не работаеееет :D
@zproger
@zproger 2 жыл бұрын
А как работает?) Добавлю к этому, что бывают такие случаи, когда асинхронный подход медленней синхронного из-за реализации библиотеки. Не сравнить это было бы неправильно, в итоге я бы не смог четко сказать, что асинхронная версия работает быстрее, ведь я это утверждаю, но если бы не показал в видео, то какой смысл от этого :) Grequests создает объект, который потом переходит в map, ему нужно передавать итерируемый объект, все примеры из видео, это и примеры из офф.документации, просто они представлены более наглядно и с комментариями.
@ternick
@ternick 2 жыл бұрын
@@zproger Ты почистил мои комменты, чисти дальше. Дальше пиши свой говнокод и сравнивай то, что никто не сравнивает.
@zproger
@zproger 2 жыл бұрын
Ничего я не чистил, не забывайте что ютуб автоматически кидает подозрительные комментарии на рассмотрение. Удачи)
@VaeV1ct1s
@VaeV1ct1s Жыл бұрын
Щас бы открывать 100к процессов для отправки запросов)))) 🤡
@QWSAFV
@QWSAFV 2 жыл бұрын
Apache benchmark для слабых
@zproger
@zproger 2 жыл бұрын
:)
18 Фишек Python о которых мало кто говорит
14:13
Vivaan  Tanya once again pranked Papa 🤣😇🤣
00:10
seema lamba
Рет қаралды 33 МЛН
That's how money comes into our family
00:14
Mamasoboliha
Рет қаралды 9 МЛН
Happy 4th of July 😂
00:12
Pink Shirt Girl
Рет қаралды 50 МЛН
Survival skills: A great idea with duct tape #survival #lifehacks #camping
00:27
ТОП 5 Ошибок в написании функций Python
12:46
Python + PyQt5 + PostgreSQL (часть 1)
25:25
Перлины: Владислав и Елена
Рет қаралды 14 М.
Vivaan  Tanya once again pranked Papa 🤣😇🤣
00:10
seema lamba
Рет қаралды 33 МЛН