Anonymous
fasthttp реально быстрее работает чем дефолтный net/http?
Pawel
а тебе реально это надо?
Anonymous
Если можно сделать быстрее, то почему бы и нет?))
Pawel
Если можно сделать быстрее, то почему бы и нет?))
потому что в 99.99999...% случаев это не является узким местом 😒
Anonymous
потому что в 99.99999...% случаев это не является узким местом 😒
Эмм Что то я тебя не так понял Видимо я слишком испорчен
Anonymous
Как понять "не является узким местом"?
Daniel
Как понять "не является узким местом"?
Родина дала тебе профайлер, прометеус дала...
Anonymous
🙄
Alexander
в сеть или в диск есть больше шансов уперется, чем в роутер
Andrei 🦉
Как понять "не является узким местом"?
У fasthttp есть кое какие ограничения, которых нет у стандартного net/http, так что если нет реальной необходимости выжимать все соки из железа, лучше использовать стандартный
Daniel
но есть и недостатки
Anonymous
но есть и недостатки
Иначе было бы все слишком радужно
Pawel
но есть и недостатки
не юзал. можете озвучить для галочки?
Daniel
да полный интернет
Kirill
Нет http2 и из коробки ws
Kirill
То, что в голову приходит первым
Kirill
Но если последнее в опенсорце лежит, то первое можно вкрутить при большом желании
Aliaksandr
в сервере нет поддержки стриминга запросов - весь запрос читается в память перед вызовом RequestHandler в клиенте нет поддержки стриминга ответов - весь ответ читается в память можно напроться на грабли с использованием ресурсов после их перезаписи
Aliaksandr
типа data race'ы всякие
Aliaksandr
т.е. для работы с видеофайлами лучше использовать тet/http - там поддержка стриминга получше. Для всяких http-based API fasthttp обычно нормально подходит, т.к. там запросы/ответы не очень большие
Aliaksandr
стриминг ответов в сервере есть. Нет стриминга запросов
Kirill
А запросы у меня по размеру лимитированы везде, где только можно
Aliaksandr
ну тогда ок
Pawel
Aliaksandr 👍спасибо за отклик
Denys
всем привет, возник такой вопрос: если есть примерно следующая структура директорий: src-|> |>application —--|> |>user (package 'user') |>platform (package 'platform') ... |>domain —--|> |>user (package 'user') |>platform (package 'platform') придется давать алиасы для пакетов. нормально ли такое наименование пакетов? возможно кто-то посоветует по-другому называть пакеты?
Denys
есть возможность например в application не делать директорий, а размещать сразу go-файлы тогда там пакет будет application
Aliaksandr
appUser, domanUser
Aliaksandr
потом, если в голову придут названия получше, просто переименуете. В го легко делать переименование пакетов :)
Denis
есть два варианта: либо не разделять на domain/application и все что к юзеру привязано складывать в один пакет user. второй вариант - раскладывать все по функциональным пакетам, например у тебя есть репозиторий юзеров для монги - mongo.UserRepository и т.д.
Denis
appUser, domanUser
ну это такое
Aliaksandr
сильно не заморачиваться, а начать с чего-нибудь. Потом видно будет
Aliaksandr
главное потом не забывать о рефакторинге
Aliaksandr
и не бояться его )
Fastumkruk
Как в этой библиотеке github.com/toby3d/telegram авторизировать бота через свой http.Client, а точнее прокси?
Kirill
@toby3d
Fastumkruk
Эм, никак ¯\_(ツ)_/¯
Эм так, а как жить то дальше? ) с блокировкой телеграм в рсци
Maxim
Эм так, а как жить то дальше? ) с блокировкой телеграм в рсци
Поднимать бота не в россии. По крайней мере сейчас. И юзать прокси/впн самому
Maxim
Сейчас каждый метод проходит через request() в котором собирается нужного формата запрос и отправляется. Никаких серверов/роутеров
Maxim
Вру, роутер есть, но только локальный, для приёма вебхуков
Kirill
Эм, никак ¯\_(ツ)_/¯
сделай Bot.SetClient()
Kirill
собственно, профит
Maxim
Да, пожалуй надо будет запилить
Kirill
ты сможешь в request() юзать соответствующий клиент
Maxim
Эм так, а как жить то дальше? ) с блокировкой телеграм в рсци
Откройте issue об этом в репозитории, я займусь в ближайшее время
Maxim
Эм так, а как жить то дальше? ) с блокировкой телеграм в рсци
Не дождался я вашего issue, но добавил поддержку собственного клиента. Обновите пакет
Maxim
Затестите и дайте знать на GitHub, если будут ещё проблемы/предложения
Maxim
Пример как заюзать есть?
https://godoc.org/github.com/toby3d/telegram#Bot.SetClient
Maxim
Либо через метод, либо руками назначить: myBot.Client = myNewClient Результат идентичный
Maxim
Если клиента нет, то используется дефолтный
Kirill
Есть риск сделать очень плохо
Maxim
При использовании tg.New(accessToken) используется стандартный клиент. Если при инициализации не сработал bot.getMe(), то вернётся структура Bot и ошибка. Можно будет переназначить клиент через bot.SetClient(newClient) и попытаться проверить соединение через bot.GetMe() отдельно. P.S.: Не забудьте назначить bot.User через bot.GetMe() чтобы не возникало паник при обращении!
Fastumkruk
Maxim
telegram.Bot.SetClient undefined (type telegram.Bot has no method SetClient)
Сначала инициализируйте структуру бота
Fastumkruk
Сначала инициализируйте структуру бота
(Думаю будет полезно сделать как в других библиотеках: в редми написать пример подключения бота и ответ на сообщение.)
Fastumkruk
Архитектура пакета пока не совсем стабильна, чтобы уже клепать примеры
Элементарный пример подлкючения, думаю должен быть на любой стадии развития.
Maxim
Это же довольно очевидно, что для использования/назначения чего-либо из/в структуры нужно для начала её инициализировать в какую-нибудь переменную: bot := new(telegram.Bot) bot.SetClient(myClient) bot.AccessToken = "myToken" bot.User, err = bot.GetMe() или bot := telegram.New("myToken") bot.SetClient(myClient)
Maxim
Есть отдельный пакет для конвертации даты из http в fasthttp и обратно, но он предназначен для мягкой миграции с одного пакета на другой, а не постоянного использования, так как наносит урон по производительности
Fastumkruk
@kirilldanshin
Maxim
var proxyClient = &fasthttp.HostClient{ Addr: "upstream.host:port", } Собственно, как в fasthttp заюзать прокси с логином и паролем?
Гляньте пока вот эти issues: https://github.com/valyala/fasthttp/issues/64 https://github.com/valyala/fasthttp/issues/161
Aliaksandr
Думаю, нужно переопределить HostClient.Dial