LINUX.ORG.RU

существует ли протокол без таймаутов?

 ,


0

1

Идея такая: чтобы emerge -Gk, когда скачивает бинарные пакеты, инициировал компиляцию на серверной стороне в случае отсутствия пакета. Ну и дожидался результата сборки. Если использовать HTTP, то подозреваю, что результата сборки клиентская часть не дождётся из-за таймаута. Так ли это? И есть ли другие протоколы, которые можно было бы использовать для этого сценария?

в случае отсутствия пакета

ставь пакет в очередь, а потом собирай.

emulek
()

держать такое соединение - значит жрать зазря ресурсы сервера. Клиент должен отключиться, и через какое-то время спросить у сервера - ну чо, готово?

Чтобы не писать самому такой сервер, имхо самое простое - поднять веб-сервер с PHP, который информацию о статусе пакета будет отдавать в JSON. Запрос на статус слишком короткий, чтобы тормоза PHP смогли на что-то повлиять, а писать на нем гораздо быстрее, чем изучать сетевую магию c++.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Не надо плодить велосипеды. Особенно на PHP. Просто не надо, пожалуйста.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Тебе distcc нужен.

он распределяет сборку отдельных файлов.
ты бы еще ccache вспомнил.
А мне надо не это, мне надо, чтобы отсутствующие .tbz2-файлы создавались на лету

Indaril_Shpritz
() автор топика
Последнее исправление: Indaril_Shpritz (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

вот я именно это и хочу сделать, чтобы клиент устанавливал только бинарные пакеты, подтягивать он их будет с PORTAGE_BINHOST по HTTP, а на сервере как раз проверять - если пакета нет, то пересобрать по-быстрому

Indaril_Shpritz
() автор топика

я не знаю, спрашиваю

Если использовать HTTP, то подозреваю что

подозревай, но попробуй сначала

намёк понятен?

novoxudonoser
()
Ответ на: комментарий от Indaril_Shpritz

Гм-гм-гм. Мне в голову вот что пришло: делаешь pretend, смотришь в списке те, которые надо собрать, отдаешь серверу команду. Он доделывает, и ты делаешь уже install в зависимости от результата. Тебе нужен ssh и немного шелла. С другой стороны, если флаги на сервере и клиенте различаются, то пакет тебе просто так собрать не получится. Нужно будет передать ему туда твои флаги, скомпилять (но не устанавливать), и при этом разрулить зависимости. Уверен, что тебе это всё нужно?

kirk_johnson ★☆
()

Если использовать HTTP

В HTTP/1.1 все соединения по умолчанию с keep-alive

что результата сборки клиентская часть не дождётся из-за таймаута

Посылай несколько раз в минуту heartbeat какой-нибудь.

mix_mix ★★★★★
()
Ответ на: комментарий от kirk_johnson

у меня особый случай - я хочу сделать цепочку бинарных репозиториев для автоматизации кросс-компиляции. В конкретном моём случае флаги различаться не смогут, потому что я им не позволю это делать

Indaril_Shpritz
() автор топика
Последнее исправление: Indaril_Shpritz (всего исправлений: 1)
Ответ на: комментарий от Indaril_Shpritz

Ну тогда всё ok. Логинишься по ssh, просишь собрать тебе нужные пакеты, отцепляешься, устанавливаешь бинарные. Но по уму это стоило бы добавить в сам portage.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

по ssh, просишь собрать тебе нужные пакеты

а что такого даст ssh, чего нельзя увидеть по HTTP-запросам к веб-серверу tbz2-пакетов?

Indaril_Shpritz
() автор топика
Ответ на: комментарий от Dred

вебсокеты нужны для того, чтобы сервер мог уведомить по своей инициативе. А тут стандартная модель «запрос-ответ»

Indaril_Shpritz
() автор топика
Ответ на: комментарий от kirk_johnson

Но это, у меня просто бинарные пакеты по NFSv4 отдаются :)

kirk_johnson ★☆
()

Заголовок:

протокол

Теги:

gentoo

Пост:

Идея [...] Так ли это?

Уберите пожалуйста этого шизофреника от компьютера!

Indaril_Shpritz, прекрати набивать скор на лоре, включи мозг и попробуй что-нибудь сделать самостоятельно.

funeralismatic ★★★
()
Ответ на: комментарий от Indaril_Shpritz

А тут стандартная модель «запрос-ответ»

Есть коммутация каналов (SDH, например) коммутация пакетов (IP, например), а есть еще коммутация сообщений (e-mail, например). Я это к чему: да, здесь запрос-ответ, но ты пытаешься использовать пакетные технологии, а тебе нужно коммутация сообщений.

В эру модемов был такой сервис: оправляешь ему URL по e-mail, он тебе скачивает страничку cо всеми attachments, архивирует и отправляет ответом по e-mail. SMS сервисы тоже построены по такому принципу.

Тебе нужно инициировать что-то на другом сервере (как угодно - ssh, e-mail...), оставить «свои данные» (например, ip:порт, e-mail aдресс...), а, когда та сторона закончит компилить, она тебе стукнет в ip:порт, и ты можешь дальше коннектиться, скачивать результат. Хочешь, по e-mail пришлет, на твой ftp зальет, или сделает uuencode и вышлет тебе посредством sms.

Суть ясна?

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

ты пытаешься использовать пакетные технологии, а тебе нужно коммутация сообщений.

нет никакой разницы. И в том и в другом случае нужно хранить состояния и на сервере и на клиенте (что сообщение было/не было отправлено, чего ждём)

Indaril_Shpritz
() автор топика
Ответ на: комментарий от Indaril_Shpritz

Настройки клиента firefox. Вдруг такие-же есть в других клиентах, например wget

Конечно есть. Только это, конечно же, настройки клиентов. В самом http от таймаутов есть только код ошибки на случай, если серверу надоело ждать.

melkor217 ★★★★★
()
Ответ на: комментарий от Indaril_Shpritz

нет никакой разницы. И в том и в другом случае нужно хранить состояния и на сервере и на клиенте (что сообщение было/не было отправлено, чего ждём)

Есть разница: скорость установления соединения (в контексте коммутации сообщения - сессии), потребление ресурсов хостов, длительность хранения «состояния и на сервере и на клиенте». И вообще, разные технологии.

Kroz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.