Fork me on GitHub
#clojure-russia
<
2016-07-01
>
maxp03:07:19

уважаемые, поделитесь сокровенным знанием, что вы делаете, когда хочется сделать цикл обработки лонг поллинга?

niquola12:07:18

core.async?

maxp14:07:41

насколько я в курсе, кор.асинк про то, как взаимодействовать между потоками,

maxp14:07:14

а у меня сокорее про то, как попускать демона или что-то в этом роде

maxp14:07:29

и как остановить его.

misha14:07:52

сажаешь while true поллинг в go блок, при получении полезного ответа пишешь в (/закрываешь) канал ответов; во втором го блоке смотришь на канал ответов, и в зависимости от содержимого что-то делаешь: киляешь/запускаешь/логаешь/etc.

kronos_vano14:07:28

go-loop еще есть

asolovyov14:07:54

а никто не пытался заводить модули в продакшен билде по типу https://rasterize.io/blog/cljs-dynamic-module-loading.html ?

kronos_vano14:07:55

@maxp

(defn dispatch
  []
  (let [ch (chan 100)]
    (go-loop []
      (when-some [data (<! ch)]
        (do-job data)
        (recur)))
    ch))
когда ты сделаешь (close! ch) go-loop сам остановится

niquola14:07:09

@maxp go-loop с управляющим каналом, которым его можно выключить

maxp14:07:25

а треадпул в go-loop чей?

maxp14:07:13

так-то у меня проще, только вместо канальчика атом

maxp14:07:27

но с канальчиками забавнее выглядит... надо подумать

kronos_vano14:07:17

так кор асинка пул и есть. Чей тредпул у go блоков?

maxp14:07:28

кстати, а кто будкет писать в вашканальчик будет?

kronos_vano14:07:53

кто то извне

misha14:07:02

ну канальчик же вне лупа

kronos_vano14:07:02

функция как раз вернула канал чтобы в него писать

maxp14:07:20

тут в меня прикол в том, что я сам хожу куда-то наружу

maxp14:07:23

и жду там данные

maxp14:07:38

то есть мне про это надо нить на самом деле

maxp14:07:58

а чей, действительно пул у го-блоков?

maxp14:07:17

вот у (send ) есть свой небольшой пул

kronos_vano14:07:45

подозреваю ответ тут

maxp14:07:05

(send-off ) просто JAVA треды плодит

maxp14:07:21

а правильно ли я понимаю, что go-loop'ов не надо плодить сильно дохрена?

maxp14:07:49

в случае .clj

maxp14:07:05

в .cljs там пофиг, так и так нить одна

misha14:07:25

пишут, что в них блокирующее не стоит вызывать, иначе и треды закончатся, и смысл пропадает: парковаться с заблокированным процессом не получится

maxp14:07:42

вот-вот, у меня на эту тему вопрос и был

misha14:07:52

ну если ты вынесешь ио-фетчилку в тред, а обработку результата засунешь в го-луп, должно быть ок, нет?

maxp14:07:09

так и сделал

maxp14:07:15

только без каналов

maxp14:07:26

то есть обработка однонитевая тоже

maxp14:07:40

оттда же и вызвавется

maxp14:07:55

напрямую, без каналов - там не надо просто

maxp14:07:02

это бот для Телеграма 🙂

maxp14:07:58

но как только появится еще один интерфей - Фейсбук, например, так тут-то какме-то канальчики уже будут очень кстати

maxp14:07:50

хотя тут уже всякие приколы в полный рост

maxp14:07:30

пока mount рестартует всю хрень, предыдушая нить еще висит на Телеграме в лонгполлинге (3 сек)

maxp14:07:49

телеграм ругается на новое подключение, когда старое еще висит

maxp14:07:14

новое подключение недоумевает.... потом старое успешно завершается и все дальше работает

maxp14:07:01

в логах "стоп" появляется после "старт" и все такое прочее веселье реального мира

misha14:07:48

сделай стоп блокирующим, маунт же ждать умеет?

maxp14:07:15

да ну его

maxp14:07:31

так, в общем, работает

misha14:07:44

что бы у тебя знание о висящем треде и 3 секундах не утекало из компоненты вообще

misha14:07:11

рано или поздно прийдется kappa

maxp14:07:41

ну лучше я получу где-то один-другой зависший тред, чем поставлю колом на первом же таймацте

misha14:07:35

fail fast kappa

maxp14:07:41

тут такое дело

maxp14:07:17

вот висит сеть, и что мне ее ждать что-ли? пока длиннющий тцп таймацут не выйдет

maxp14:07:32

пусть уж лучше тред повисит в странном состоянии

maxp14:07:41

как отвиснет, так завершится.

misha14:07:50

так надо не её ждать, а таймаут кастомный, который ты не засетапил

maxp14:07:15

не, там есть таймаут, который я пожелал,

maxp14:07:28

но к тому, который может случиться в сети это имеет мало отношения 🙂

maxp14:07:04

в смысле, у Телеграма есть параметр - таймаут лонг поллинга

maxp14:07:27

вот что-то я решил пополлить вместо вебхука.

misha14:07:30

так то ж другой таймаут

maxp14:07:11

ну да, но чисто на коннект таймаут довольно долгий

maxp14:07:25

и как-то надо с этим жить

olegakbarov14:07:41

гайс, а тут нельзя про вакансии писать? а то я ищу того, кто хочет и может в кложу))

misha14:07:51

kappa уже написал #C0EA48FGA

kronos_vano14:07:41

@olegakbarov: в сбере жива кложа?

olegakbarov15:07:32

я не в сбере 🙂

kronos_vano15:07:13

сорян then

olegakbarov15:07:49

но я был там!

olegakbarov15:07:54

с кем имею честь?

andre16:07:15

так что с вакансией? 🙂