
Dmitriy
22.08.2016
08:55:12

Vladimir
22.08.2016
08:55:21
и логика на бекенде

Dmitriy
22.08.2016
08:55:23
там выдача ресурсов, подсети, всякое разное

Vladimir
22.08.2016
08:55:24
с блокировкой изменений

Google

Dmitriy
22.08.2016
08:55:26
не амазон :)

Cykooz
22.08.2016
08:59:09
Зачем? Это усложняет api.
Чем усложняет? Какая разница где указывать "тип задачи", в параметрах или в URL?. Указывая в URL имя "специализированного" воркера хотя бы делаешь разделение логики и не придётся в документации писать "а вот если этот параметр "такой", то все остальные параметры должны быть вот такими". Плюс использование URL избавляет от самопального роутинга на стороне сервера.
Использование единого URL - всё равно что в коде сделать одну мега-супер-функцию, которая в зависимости от значения аргументов может выполнять любую функциональность нужную в коде.
А на счёт локов которые предотвращают изменение ресурсов в момент работы над ними, то не совсем понятно - как это решается в неREST. Это ведь вообще не имеет к API сильного отношения. Эта проблема более фундаментальна и низкоуровневая и возникнет в независимости от того как организован API.

Vadim
22.08.2016
09:12:32
всем привет, какую либу посоветуете для валидации схемы json?

Cykooz
22.08.2016
09:13:58
Сolander
http://docs.pylonsproject.org/projects/colander/en/latest/

Vadim
22.08.2016
09:16:09

Cykooz
22.08.2016
09:19:59

Vadim
22.08.2016
09:20:30
в принципе, мне оно только для json и нужно)

Cykooz
22.08.2016
09:23:01
Судя по моим ощущениями и документации - оно само не занимается десериализацией сырого XML или HTML формы. На вход она принимает питонячий словарь или список, и просто приводит типы значаний к тем что указаны в схеме (например строку "10" из JSON может перевести в питонячий int - 10)

Mikhail
22.08.2016
09:23:12
ребят, а есть чатик по сетям? добавьте плиз

Pavel
22.08.2016
09:24:08

Mikhail
22.08.2016
09:24:23

Vadim
22.08.2016
09:44:58
Так, теперь чуть более фундаментальный вопрос) делаю абстрактную хрень в вакууме, но представляем, что это что-то важное. Хорошая ли это практика избавляться от исключений так, что каждая функция будет возвращать кортеж, где первый элемент - результат, а второй - ошибка, типа как в го принято, чтобы можно было возвращать множество ошибочных значений

Google

Vadim
22.08.2016
09:45:31
Хотя начальное уточнение тут лишнее, вопрос вообще про такой подход)

Cykooz
22.08.2016
09:46:39
Ну в питонах подобный подход используется во всяких асинхронных фреймворках, просто потому что там "некуда" райзить исключение.
В остальном обычно используют обычные исключения.

tosh
22.08.2016
09:47:16
Надо просто ничего не перехватывать и всё повесить под супервизор, как в эрланге!

Cykooz
22.08.2016
09:47:51
Если у тебя несколько ошибок, то они как правило однотипные - например ошибки валидаци разных полей в JSON. Просто все эти детали запихиваешь внутрь одного исклучения ValidationError

Vadim
22.08.2016
09:48:29
т.к. часто слышу, что использовать исключения для контроля выполнения программы - плохо, типа это идеологически неправильно и много оверхеда по ресурсам. асинхронщиной не страдаю пока, но может это применимо и в обычном синхронном мире

tosh
22.08.2016
09:48:56
В питоне исключения вряд ли станут твоим ботлнеком

Cykooz
22.08.2016
09:49:20
Оверхед на производительность идёт только в случае если исключение происходит - явно это очень редкая ситуация

Vadim
22.08.2016
09:49:49
вероятно, хотя я больше про идеологию) если это совсем не питоник вей, то хрен с ним

Сергей
22.08.2016
09:50:38
Главное не пихать исключения в самые ресурсозатратные и частые операции
Не использовать их как условия

Cykooz
22.08.2016
09:50:50
А вот писать в стиле
res, err = do_my_work()
if err == ...:
...
elif err == ...:
....
Может быть несколько накладно

Сергей
22.08.2016
09:50:55
Это должно быть очень редкое событие
А то пихают исключения в рендер кадров и потом имеют 5 фпс

Vadim
22.08.2016
09:52:32

Cykooz
22.08.2016
09:53:06

tosh
22.08.2016
09:53:31
В гошке так пишут от безысходности

Vadim
22.08.2016
09:55:23
Хорошо, спасибо) тогда не буду пока страдать всяким. Мне показалось это потенциально удобным, но хз, го не трогал, только чуть-чуть видел, после чего и появились такие мысли

Cykooz
22.08.2016
09:57:36
В гошке так пишут от безысходности
Я не спец по go, но проведя параллель между go и питонячими асинхронными фреймворками могу понять почему у них нет исключений. В питонячей асинхронщине исключения тоже бесполезны. Их можно использовать только если try..except находится в той же функции что и вызывает исключение.

tosh
22.08.2016
09:58:31
Как это противоречит тому, что я сказал?

Google

Cykooz
22.08.2016
09:59:17
Хотя в питоне всётаки исключения обрабатываются фреймворками и с ними можно немного работать :)

Vadim
22.08.2016
10:35:33

Мерлин
22.08.2016
10:42:36

Whore Amazing
22.08.2016
10:57:11
Или, может, кто знает более годный способ заскринить часть экрана?

Stanislav
22.08.2016
11:02:40
Это не я если что

Roman
22.08.2016
11:24:39
возьмите любой асинхронный фреймворк и получите это.
потому я в горячих точках просто использую свои враперы к сисколлам вроде splice/sendfile

Cykooz
22.08.2016
11:29:20

Roman
22.08.2016
11:32:02

Cykooz
22.08.2016
11:34:34
Ну вот, как я и сказал - сам способ организации API вообще никак волебным образом не решает эту задачу.

Roman
22.08.2016
11:35:01

Cykooz
22.08.2016
11:35:38
Если есть какая то конкретная задача - то под неё делается конретный исполнитель.

Roman
22.08.2016
11:35:47

Cykooz
22.08.2016
11:35:56
Ничего волшебного REST не предлагает в этом плане
Никто нигде не говорил, что REST - это тупая обертка над CRUD с таблицами в базе данных. Никто не запрещал делать свои уникальные ресурсы, которые будет решать уникальные задачи.

Roman
22.08.2016
11:37:28

Cykooz
22.08.2016
11:37:59
А полинг тут причём? Как RPC от него избавляет?

Google

Roman
22.08.2016
11:38:17

Cykooz
22.08.2016
11:39:14
Ну да, я написал - ставим таску воркеру, и если нам это интересно - проверяем статус её выполнения. Если не интересно - не проверям. Если не хочится самому чекать статус - прикручиваем сбоку вебсокеты, пуши или ещё что то.

Roman
22.08.2016
11:39:48
ну если так, то зачем тут вообще тогда рест?

Cykooz
22.08.2016
11:40:00
А зачем тут RPC?
В чём разница то?

Roman
22.08.2016
11:40:21

Admin
ERROR: S client not available

Cykooz
22.08.2016
11:40:58
У REST хотя бы есть свои плюшки в плане разработки, которые вытекают из унифицированного интерфейса. Легко автоматизировать генерацию документации, легко автоматизировать половину тестов API.

Roman
22.08.2016
11:41:57
ну или json-rpc?
или если не нравится json, то можно взять другой сериализатор и сохранить конверцию?

Cykooz
22.08.2016
11:44:33
Ну вот я как бы и ищу какие то яркие примеры, которые вообще никак не укладываются на парадигму ресурсов в REST. Пока что ни сам ни смог придумать такое, ни другие мне не показали кейс, где вот ни как неполучается придумать "ресурс" выполняющий нужную задачу.

Roman
22.08.2016
11:45:23
а запросов надо делать много и всяких разных.

Cykooz
22.08.2016
11:45:59
Это ты про особености HTTP?
Ну тут не спорю - HTTP не очень эффективный транспорт для быстрой отправки большого числа сообщений. Хотя в HTTP/2 сделали уже гораздо лучше.

Roman
22.08.2016
11:47:00
Это ты про особености HTTP?
ну, если мы говорим в рамках http 1.0, то там вообще на каждый запрос надо устанавливать коннект, что при rtt в 300-400ms означает 600-800ms на запрос.

Aragaer
22.08.2016
11:47:17
можно REST на уровне философии как-то подружить с вебсокетами?

Google

Roman
22.08.2016
11:47:25

Cykooz
22.08.2016
11:47:51
Ну а в целом - REST это ведь про HTTP. Можно заюзать любой другой транспорт. Дело ведь в принципе работы с ресурсами, а не в протоколе.

Roman
22.08.2016
11:48:40
Это ты про особености HTTP?
я скорее про сеть. пересылка запроса по сети может занимать существенное время и тут важно иметь максимально компактные запросы + возможность прозрачной агрегации их в пачку(чем-то похоже на алгоритм Нейгла)

Cykooz
22.08.2016
11:50:35

Roman
22.08.2016
11:50:56
т.е. можно даже сделать tcp/ip поверх вебсокетов, но зачем?

Cykooz
22.08.2016
11:51:55

Roman
22.08.2016
11:54:14

Aragaer
22.08.2016
12:03:52
интерес в вебсокетах именно в инициации события от сервера к клиенту
получается не доступ к ресурсам, а попытка подписаться на извещения об изменении статуса ресурса

Cykooz
22.08.2016
12:06:57

Aragaer
22.08.2016
12:07:47
ну я про то, что это не укладывается в REST

Cykooz
22.08.2016
12:12:23
Врятли вы будете через вебсокеты передавать большие объёмы данных, или велосипедить что то для организации гарантированной доставки данных со своей системой ошибок. Веб-сокеты плохо под это подходят.

Roman
22.08.2016
12:25:03

Cykooz
22.08.2016
12:26:41
Ну хотя бы потому, что сами веб-сокеты вообще не предлагают каких то решений для этого. Придётся самому изобретать HTTP поверх веб-сокетов. Например что бы скачать файл с функцией докачки при обрыве связи (это как пример передачи больших объёмов данных)

Roman
22.08.2016
12:27:20
вебсокеты - это про сообщения

Cykooz
22.08.2016
12:28:01
Да, но человек спросивший про вебсокеты, видимо хотел вообще всё API через них пустить ?
Можно конечно, но по моему не имеет смысла