@ru_python

Страница 3706 из 9768
serbernar
07.09.2017
16:46:05
:D

И щас опять начнется

Почнеться*

Google
Aleksandr
07.09.2017
16:48:10
icmp потребует именно raw-сокет и конечно это потребует специальные права (CAP_NET_RAW)

Aleksandr
07.09.2017
16:52:27
я изначально ориентировался на запуск процесса ping из коробки.
ну это очень неудобно и совсем неэффективно, плюс ты не можешь управлять гибко параметрами пакетов которые отправляются, хотя если хорошее решение не обязательно то можно и так

Aleksandr
07.09.2017
16:54:53
ну и спецификацию icmp, он довольно простой

Nikolay
07.09.2017
17:16:07
ну и спецификацию icmp, он довольно простой
я думал это пригодится только в универе

Aleksey
07.09.2017
18:12:04
Друзья в aiohttp сколько ставить таймаут, чтобы можно было скачивать архи большой файл и скрипт не упал из-за таймаута?

?
07.09.2017
18:18:33
Over9000

Nikolay
07.09.2017
18:21:56
Какой смысл с асинхронным asyncio использовать синхронный urllib?

Aleksandr
07.09.2017
18:22:44
Bill
07.09.2017
18:29:19
штоэта
Поиск по ютубу "американцы пробуют сюрстреминг"

Увлекательны ролики

Google
Donaudampf
07.09.2017
18:35:29
Друзья в aiohttp сколько ставить таймаут, чтобы можно было скачивать архи большой файл и скрипт не упал из-за таймаута?
0. Емнип там есть таймаут на ответ сервера, его есть смысл ограничить. Ну и качай чанками

Nikolay
07.09.2017
18:36:47
кстати, мы тут с коллегами нашли адскую хрень в aiohttp

Nikolay
07.09.2017
18:38:01
в клиенте?
ага короче, если создавать сессию и шарить ее между корутинами - то есть жопа невидимая

если кроулить по порядку кучу урлов на разные сайты и хоть один урл упадет по таймауту - по таймауту падает вся пачка

потому что таймаут на сокет целиком, а не на отдельный дескриптор

Aleksandr
07.09.2017
18:39:43
потому что таймаут на сокет целиком, а не на отдельный дескриптор
а ты как на один сокет создаешь несколько дескрипторов? сокет описывает всегда только один fd

Aleksandr
07.09.2017
18:40:17
потому что таймаут на сокет целиком, а не на отдельный дескриптор
таймаут как раз на дескриптор а не на сущность Request в сессии

Nikolay
07.09.2017
18:40:18
а ты как на один сокет создаешь несколько дескрипторов? сокет описывает всегда только один fd
epoll у тебя каждый раз возвращает дескриптор, когда событие происходит

Aleksandr
07.09.2017
18:40:43
Alexander
07.09.2017
18:40:51
а ты как на один сокет создаешь несколько дескрипторов? сокет описывает всегда только один fd
Есть dup, так что один сокет может быть за несколькими дескрипторами

Nikolay
07.09.2017
18:41:36
но он не новый же, он того у кого событие было
и? в случае питона у тебя все упирается в TCPConnector

Donaudampf
07.09.2017
18:41:39
дык вроде бай дизайн
Ну я на это натолкнулся, нагуглил выход. Надо будет дома глянуть, так не помню уже

Alexander
07.09.2017
18:42:26
он возвращает новый fd
Ну да, я и говорю — несколько fd на один сокет

Nikolay
07.09.2017
18:42:42
Ну да, я и говорю — несколько fd на один сокет
не просто несколько, их может вообще дохрена быть

это ж не select, где ограничение 255 вроде

Aleksandr
07.09.2017
18:43:23
Ну да, я и говорю — несколько fd на один сокет
ты же копию создаешь, почему один-то?

Google
Aleksandr
07.09.2017
18:45:50
это ж не select, где ограничение 255 вроде
там 1024 fd которые он может одновременно

Nikolay
07.09.2017
18:47:50
кто и зачем их создает?
epoll создает, чтобы соединение обработать

Aleksandr
07.09.2017
18:48:17
epoll создает, чтобы соединение обработать
зачем он плодит fd больше чем количество сокетов?

Alexander
07.09.2017
18:48:22
ты же копию создаешь, почему один-то?
Последовательные read'ы на копиях сокета будут возвращать новые данные. Полностью скопировать сокет ты не можешь. Как и файл

Nikolay
07.09.2017
18:48:31
зачем он плодит fd больше чем количество сокетов?
чтобы больше соединений обрабатывать

сокет - это всего лишь дырка, а дескрипторов для мультиплексирования на ней может быть много

Aleksandr
07.09.2017
18:48:55
чтобы больше соединений обрабатывать
у тебя сто клиентов пришло, ты с ними работаешь, зачем тебе больше 100 fd?

Nikolay
07.09.2017
18:49:21
у тебя сто клиентов пришло, ты с ними работаешь, зачем тебе больше 100 fd?
больше и не надо, но если я с ними через один сокет работаю - у меня epoll и создаст 100 fd

Nikolay
07.09.2017
18:49:34
ты слушающий сокет наверное имеешь ввиду
да, но с клиентским разница не особо большая

просто дескрипторы создаются не на входящие, а на исходящие соединения

Aleksandr
07.09.2017
18:50:07
да, но с клиентским разница не особо большая
большая, там в один сокет пишет только один клиент как правило

Nikolay
07.09.2017
18:50:44
ты в корутинах делаешь сотни запросов в секунду, на каждую корутину свой дескриптор

параллельно

Nikolay
07.09.2017
18:52:12
ты сейчас про какой протокол? про http/1?
я сейчас про TCP и вызов epoll

причем тут http?

Aleksandr
07.09.2017
18:52:33
причем тут http?
речь про aiohttp вообще была

Google
Nikolay
07.09.2017
18:52:54
речь про aiohttp вообще была
ээ? и? из-за этого L7 внезапно стал L6?

Aleksandr
07.09.2017
18:53:09
Alexander
07.09.2017
18:54:00
сокет - это всего лишь дырка, а дескрипторов для мультиплексирования на ней может быть много
Так зачем один сокет добавлять 100 раз в epoll, если просто можно помнить, что на этом сокете 100 соединений?

Nikolay
07.09.2017
18:54:06
tcp это L4
ну ты понял :)

Так зачем один сокет добавлять 100 раз в epoll, если просто можно помнить, что на этом сокете 100 соединений?
"запомнить, что на сокете 100 соединений" = "создать 100 дескрипторов по числу обработчиков этих соединений", разве нет?

Aleksandr
07.09.2017
18:54:48
я сейчас про TCP и вызов epoll
как можно с одного сокета работать в 100 клиентов? назови хоть один протокол который так умеет? любого уровня выше 4-го

Aragaer
07.09.2017
18:55:34
эээ

вы о чем тут вообще?

Nikolay
07.09.2017
18:55:37
как можно с одного сокета работать в 100 клиентов? назови хоть один протокол который так умеет? любого уровня выше 4-го
ты можешь делать параллельно 100 запросов через корутины на одном и том же сокете

Aragaer
07.09.2017
18:55:47
по-моему вы что-то путаете

Admin
ERROR: S client not available

Aragaer
07.09.2017
18:55:51
один сокет серверный

каждый пришедший клиент это +1 сокет клиентский

Aragaer
07.09.2017
18:56:12
100 клиентов = 101 дескриптор

Nikolay
07.09.2017
18:56:14
и я про это

Aragaer
07.09.2017
18:56:47
нет, не так

Aleksandr
07.09.2017
18:56:51
ты можешь делать параллельно 100 запросов через корутины на одном и том же сокете
можешь, какой протокол такое поддерживает? http/1? нет (только если с паплайнингом)

Aragaer
07.09.2017
18:57:11
создается один сокет. Его слушаем. Каждый пришедший клиент сидит и ждет, пока ты сделаешь accept

Google
Aragaer
07.09.2017
18:57:21
accept возвращает новый сокет - уже клиентский

Alexander
07.09.2017
18:57:44
"запомнить, что на сокете 100 соединений" = "создать 100 дескрипторов по числу обработчиков этих соединений", разве нет?
Нет. Создавать fd — это дорого. Добавлять в epoll — дорого. Да и потом. Если ты хочешь закрыть сокет и удалить его из еполла, то тебе нужно будет закрыть все ассоциированные с ним fd — это тоже дорого

Aleksandr
07.09.2017
18:58:50
Alexander
07.09.2017
18:59:38
Потому работаем с hugepages, в которых операции дешевле
Какое отношение большие страницы имеют к количеству системных вызов?

Aleksandr
07.09.2017
18:59:58
это TCP умеет
tcp для http дает транспорт, логика http/1 не предполагает что в одно соединение пишет 100 клиентов, только один

Nikolay
07.09.2017
19:00:42
tcp для http дает транспорт, логика http/1 не предполагает что в одно соединение пишет 100 клиентов, только один
логика http тут вообще ни при чем. Ты можешь с одного TCP-сокета в асинхронном режиме держать 100 http-сессий одновременно, хоть на сервере, хоть на клиенте

или 100 сессий любого другого прикладного протокола

Aleksandr
07.09.2017
19:01:15
Но он не шарит клиентские сокеты, только слушающие
могу ошибаться но вроде шарит, на более свободные воркеры, то есть принять может один а отдать другой

логика http тут вообще ни при чем. Ты можешь с одного TCP-сокета в асинхронном режиме держать 100 http-сессий одновременно, хоть на сервере, хоть на клиенте
это один клиент, то что ты шлешь туда разные запросы и не отпускаешь соединение никак не влияет на то что там один fd и один сокет

для http/2 то что пишешь ты уже становится реальностью

а для http/1 нет

Aleksandr
07.09.2017
19:04:26
там не один fd
один, зачем там больше?

Nikolay
07.09.2017
19:04:56
один, зачем там больше?
затем, что больше параллельных коннектов держится

почитай, как epoll работает

Страница 3706 из 9768