
Aleksandr
07.09.2017
19:06:47
затем, что больше параллельных коннектов держится
один сокет - это один коннект, потому что коннект требует порта, к нему привязываются i/o объекты. ты можешь в один коннект писать что угодно и хоть из тысячи потоков но sockfd будет один, а создавать копии по умолчанию смысла нет

Nikolay
07.09.2017
19:07:20
sockfd будет один, но клиентских сокетов будет больше

Aleksandr
07.09.2017
19:07:51

Google

Nikolay
07.09.2017
19:08:11
этот вызов создает один дескриптор, да, а потом приходит epoll и создает и мониторит еще пачку по числу клиентов

Aleksandr
07.09.2017
19:08:35

Alexander
07.09.2017
19:09:05

Donaudampf
07.09.2017
19:09:25
нет, просто таймаут
В aiohttp есть параметры limit_per_host и limit, у меня так было: get в корутине ставил в очередь сразу все стопицот урлов, но мёртвые забивали весь лимит, поэтому до большинства дело даже не доходило, и они все по таймауту отваливались. Это действительно дезигн, видимо. Я просто запускал корутины с get через семафор, который не позволял ставить на скачивание одновременно больше урлов, чем разрешает limit, стало вроде норм

Aleksandr
07.09.2017
19:09:29

Nikolay
07.09.2017
19:10:31

Aleksandr
07.09.2017
19:10:44
listen() marks the socket referred to by sockfd as a passive socket,
that is, as a socket that will be used to accept incoming connection
requests using accept(2).
The sockfd argument is a file descriptor that refers to a socket of
type SOCK_STREAM or SOCK_SEQPACKET.
listen меняет модель поведения сокета

Nikolay
07.09.2017
19:10:47
не без ошибок, но в целом нормально

Aleksandr
07.09.2017
19:11:08
мы не про питон, мы про tcp и его реализацию в ядре

Nikolay
07.09.2017
19:11:20
там прям пример кода есть вот такой:
while True:
events = epoll.poll(1)
for fileno, event in events:
if fileno == serversocket.fileno():
connection, address = serversocket.accept()
connection.setblocking( 0)
epoll.register(connection.fileno(), select.EPOLLIN)
connections[connection.fileno()] = connection
requests[connection.fileno()] = b''
responses[connection.fileno()] = response
ну, на примере питона проще объяснить

Google

Nikolay
07.09.2017
19:12:11
из кода видишь, что на ивент с epoll создается дескриптор
и их будет много, по одному на каждое соединение
любой асинхронный сервер так работает, более того, клиент тоже, только там не accept вызывается, а open

Aleksandr
07.09.2017
19:13:34

Alexander
07.09.2017
19:13:37
serversocket — это слушающий сокет. Поэтому в словаре всегда будет один fd на одно TCP-соединение

Nikolay
07.09.2017
19:14:01

Aleksandr
07.09.2017
19:14:05

Nikolay
07.09.2017
19:14:38
и epoll их мониторит

Alexander
07.09.2017
19:14:48

Nikolay
07.09.2017
19:14:53
я про это и говорил с самого начала

Aleksandr
07.09.2017
19:15:54

Alexander
07.09.2017
19:16:16
Аааа, я понял, что ты говоришь. Но это было сложно

Nikolay
07.09.2017
19:16:17
просто дескрипторы не accept создает, а open
и точно так же добавляет их в epoll
нету особой разницы

Alexander
07.09.2017
19:17:21

Nikolay
07.09.2017
19:19:19
суть от этого не меняется

Google

Nikolay
07.09.2017
19:19:24
https://www.opennet.ru/base/dev/epoll_intro.txt.html#client.cpp

Сергей
07.09.2017
19:19:48
Подскажите, может ли бот читать сообщения из канала?

Aleksandr
07.09.2017
19:21:20

Sheridan
07.09.2017
19:21:48
Я вездессущ

Aleksandr
07.09.2017
19:21:56

Alexander
07.09.2017
19:23:43

Aleksandr
07.09.2017
19:25:14
Ага, я уже понял его
но сокет уже работающий с сервером не может сделать listen, в общем случае. не исключаю что в ядре есть флаг ломающий все

serbernar
07.09.2017
19:28:23
Или к вам прийдёт наталка

Nikolay
07.09.2017
19:29:15
?
не, завтра пятница

serbernar
07.09.2017
19:29:46
Лол, как будто это мешает сегодня пить

Aleksandr
07.09.2017
19:30:56
гарна

serbernar
07.09.2017
19:31:19
гарна
Може стати твоэю жiнкою

Bsod
07.09.2017
19:31:33
как раз пью вино, давай наталку

serbernar
07.09.2017
19:32:04

Bsod
07.09.2017
19:32:22
не, яж не из европы

serbernar
07.09.2017
19:33:04
Ах ты тролль...

Aleksandr
07.09.2017
19:35:54

Massimo
07.09.2017
19:36:38
Кто у нее на майке?

Google

serbernar
07.09.2017
19:36:58

Nikolay
07.09.2017
19:37:04
там один сокет внешний, но дескрипторов может быть много

Massimo
07.09.2017
19:37:27
D:

serbernar
07.09.2017
19:37:31
А вообще - Иван Франко

Nikolay
07.09.2017
19:37:37

serbernar
07.09.2017
19:37:39
Поэт такой
ну если усы сбрить

Admin
ERROR: S client not available

serbernar
07.09.2017
19:38:11
(ему)
Хотя он уже мертв

Nikolay
07.09.2017
19:38:35

serbernar
07.09.2017
19:38:47
Ну и наталке тоже

Andrei
07.09.2017
19:52:59
В Украине красивые девахи

/dev
07.09.2017
19:53:24

Andrei
07.09.2017
19:54:02

/dev
07.09.2017
19:54:23

ilya
07.09.2017
19:55:27
ну всё, раз не поперёк, то ничего интересного ))))

Andrei
07.09.2017
19:55:46
инопланетяне...

Google

Andrei
07.09.2017
19:56:29
щупальца и все остальное - это в Японию
там и вдоль, и поперек, и под любым углом

ilya
07.09.2017
19:57:21
пусть в японию едут, нечего баб рекламировать, самим мало )))))

Andrei
07.09.2017
19:58:47
хм, ну да - логично

Черный
07.09.2017
20:00:43
Так вот не работает, например

Andrei
07.09.2017
20:14:33
че гугл говорит?

Черный
07.09.2017
20:17:22
про то, как устанавливать с другого канала, есть в доках конды https://conda.io/docs/user-guide/tasks/manage-pkgs.html#installing-packages-from-anaconda-org
но этот способ как раз вызывает ошибку, по которой уже куча нерелевантной фигни
впрочем, там в самой ошибке написано, что такое бывает и надо типа повторить
так что прост отложу до завтра, видимо

Andrei
07.09.2017
20:22:25
а сниффером смотрел - есть запрос на канал?

Черный
07.09.2017
20:24:54
не приходило такое в голову, попробую

Andrei
07.09.2017
20:25:54
а URL он откуда знает? в канале прописано?

Aleksandr
07.09.2017
20:25:56
урл битый

Черный
07.09.2017
20:27:07
не знаю, откуда он знает урл

Aleksandr
07.09.2017
20:27:24
имя не резолвится, что явно указано в последней строке

Черный
07.09.2017
20:28:04
и как это починить?

Andrei
07.09.2017
20:28:16

Черный
07.09.2017
20:28:26
+