@pydjango

Страница 121 из 1273
Askhat
10.02.2017
10:36:20
l

Никита
10.02.2017
10:36:20
swagger/raml

Askhat
10.02.2017
10:36:25
Но тут всё сложней

Никита
10.02.2017
10:36:37
блин я с каналами не работал.

Google
Askhat
10.02.2017
10:36:51
Blueprint

parikLS
10.02.2017
10:36:54
Вот в этом то и проблема
у меня был такой кейс с торнадой

Askhat
10.02.2017
10:36:55
Сергей

parikLS
10.02.2017
10:37:12
джанга просто пушила в редис

Никита
10.02.2017
10:37:12
я отвечал на этот вопрос)

Askhat
10.02.2017
10:37:12
Ты мне предлагаешь ещё и торнадо развернуть? :D

Никита
10.02.2017
10:37:12
Верно. Как scheduler в своём процессе поймёт, что есть функция count_retweets?

Если её не существует в его процессе

Есть же воркер как отдельный процесс и есть django как отдельный процесс верно?

parikLS
10.02.2017
10:37:22
а на торнаде был отдельный тред

не предлагаю, у тебя же вебсокеты не на торнаде

просто рассказываю как я его решал

Askhat
10.02.2017
10:37:48
Да

Google
Askhat
10.02.2017
10:37:59
У меня был один странный вариант

Переложить всё на nodejs

parikLS
10.02.2017
10:38:08
и вот тот тред слушал редис, и решал что делать, а сокет через тред шарится спокойно

Askhat
10.02.2017
10:38:48
У меня был такой вариант. Отдать ноде таску вызвать определённый url после какого то времени

Есть ещё варианты гайз?

Неужели среди 452 человек только @nmerkulov и @parikLS отвечают?)

Никита
10.02.2017
10:40:58
ну у меня прост ообеденное время)

parikLS
10.02.2017
10:41:19
у тебя ченнелс?

Askhat
10.02.2017
10:41:33
yep

Я читал, что там есть какой то delay server, думаю подойдёт ли он

Просто он тоже выполняется как отдельный процесс

Есть какой то сомнительный example



Причём не описывается, могут ли эти два процесса расшариваться друг другу

parikLS
10.02.2017
10:44:07
хз, я с ченелсом не работал еще, ток с торнадой

попробуй, вай нот)

Какао
10.02.2017
10:44:29
А что вообще лучше для вебсокетов использовать в джанго?

Askhat
10.02.2017
10:44:52
Зависит от ситуации

Какао
10.02.2017
10:45:05
Ситуация банальная - чат

Askhat
10.02.2017
10:45:11
Ноду

Google
parikLS
10.02.2017
10:45:18
щас мне аиохттп импонирует

Askhat
10.02.2017
10:45:36
В любом случае нода для таких вещей создача

socket.io

parikLS
10.02.2017
10:45:54
вебсокеты явные, а не колбеки как в торнаде

Askhat
10.02.2017
10:46:25
Ну вообще можно и channels разогнать

Я так понял

Никита
10.02.2017
10:46:39
слушай, а можешь еще раз описать, в чем конкретно проблема? учтем, что с каналами я не работал, и только бегло читал доку

Askhat
10.02.2017
10:46:40
У меня есть чат на Channels

Никита
10.02.2017
10:46:47
*перефразировать

Какао
10.02.2017
10:46:56
А всякий django-websocket-redis и другие не очень? Конкретно этот привлек относительной простотой деплоя

Askhat
10.02.2017
10:47:00
Окей

@KaoSpirit community видел?

django-websocket-redis :D

Какао
10.02.2017
10:47:28
Нет, что это?

Askhat
10.02.2017
10:47:34
Channels официально к джанго прицепилась

Какао
10.02.2017
10:47:57
Да, слышал

Askhat
10.02.2017
10:48:57
@nmerkulov Есть задача. Клиент отправляет запрос до сервера. Сервер должен отдавать по сокету клиенту каждые полчаса уведомление. Ставить worker на отложенную задачу я так понял не вариант с Channels, ибо worker это отдельный процесс, который не сможет увидеть каналы от другого процесса

Никита
10.02.2017
10:49:10
почему?

какой бэкэнд используется?

Askhat
10.02.2017
10:49:31
Как понять какой бекенд?)

Google
Askhat
10.02.2017
10:49:41
Точнее вопрос задай)

Никита
10.02.2017
10:49:41
ну в настройках)

оки

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

вот пример из доки @channel_session def ws_message(message): # Stick the message onto the processing queue Channel("chat-messages").send({ "room": message.channel_session['room'], "message": message['text'], })

Askhat
10.02.2017
10:50:13
Django Channels это изменённая версия сервера Django

Никита
10.02.2017
10:50:39
почему ты не можешь забрать Channel('your_channel_name') из другого процеса?

Askhat
10.02.2017
10:51:04
А я задаюсь вопросом возможно ли вообще это?)

Никита
10.02.2017
10:51:33
http://channels.readthedocs.io/en/stable/backends.html?highlight=layers

вот опираясь на то, что в настройках есть по inmemory layer и redis layer, я делаю ставку, что при redis layer так ну стопудово можно сделать, иначе совсем грустно

так то воркер должен запускаться в контексте джанги

проще всего это сделать собственной management command

но надо попробовать. тут в общем то один путь быстрый - эмперический)

parikLS
10.02.2017
10:54:10
сам сокет не может расшарен в другой процесс

Askhat
10.02.2017
10:54:21
Вообще я тут подумал, что может

parikLS
10.02.2017
10:54:25
можно только попробовать передать сообщение обратно в тот процесс в котором открыт сокет

Askhat
10.02.2017
10:54:25
После слов Никиты

Pavel
10.02.2017
10:54:49
Господа, я вот читаю про Channels. Я правильно понимаю, что если например 1000 человек одновременно подключится к django через websocket, на котором установлен Channels, то будет запущено 1000 воркеров джанги?

Askhat
10.02.2017
10:55:07
нет))

Pavel
10.02.2017
10:55:21
А как тогда?

Google
Askhat
10.02.2017
10:55:29
При продакшене создаётся почти три воркера

Один из них отвечает на сокеты

Остальные за http

и так далее

parikLS
10.02.2017
10:55:51
вариант расшарить тсп сокет между процессами - через файловый дескриптор

Askhat
10.02.2017
10:55:56
И я так понял общаются они между собой через layer

Pavel
10.02.2017
10:56:00
кто держит сокет соединение? Джанга ж блокирующий сервер

Askhat
10.02.2017
10:56:15
Там Daphne

Из джанги сделали асинхронку

Pavel
10.02.2017
10:56:48
Channels does not introduce asyncio, gevent, or any other async code to your Django code; all of your business logic runs synchronously in a worker process or thread.

это в доке написано по Channels

нет там асинхронки

Askhat
10.02.2017
10:57:19


Какао
10.02.2017
10:57:19
С виду написано, нет асинхронного кода, а не асинхронки

Askhat
10.02.2017
10:57:48
Перехватчики

Может быть я не правильно выразился =/

Я так понял, что он превращает любой http запрос в канал

Pavel
10.02.2017
10:58:34
run synchronously так вроде и понимается, что работает не в асинхронном режиме, нет?)

Никита
10.02.2017
10:58:45
ну это смотря что понимать под асинхронкой

Pavel
10.02.2017
10:59:01
Я так понял, что он превращает любой http запрос в канал
Ну так сокет - это ж постоянное соединение и его кто-то должен постоянно обслуживать

то есть какой-то воркер

один воркер на 1000 соединение - такое не работает)

Страница 121 из 1273