как обрабатывать высокие входящие данные и отправлять дросселированные данные в веб-сокеты в django-каналах - PullRequest
0 голосов
/ 12 января 2019


Я столкнулся с проблемой на моем веб-сервере django.

Мы используем python3, django2, django-rest-framework3.8 и channel2.x

Сценарий: мы получаем данные из UDP-соединения с очень высокой скоростью (~ 100 сообщений в секунду). Восстановленные данные находятся в прото-формате (можно сказать, что мы получаем байтовые данные). в этом процессе некоторые данные испытывают недостаток: скорость производства >>> скорость потребления мы реализуем регулирование, но при 100 одновременных пользователях данные снова становятся голодными. Может ли кто-нибудь помочь нам в этом сценарии.

Если у кого-нибудь есть идея новой архитектуры, пожалуйста, поделитесь.

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

PS: - Я не могу опубликовать код, так как это мои компании. но я могу помочь в любое время, когда вам понадобятся разъяснения по любому вопросу.

1 Ответ

0 голосов
/ 13 января 2019

Во многих приложениях с данными о фондовом рынке ваша та же самая проблема решается с помощью Lightstreamer Server позаботиться о регулировании веб-сокета (полное раскрытие: я генеральный директор Lightstreamer).

Вы разработаете Адаптер данных, использующий API Lightstreamer, чтобы получать данные из вашего UDP-соединения и вставлять их в сервер Lightstreamer. Затем вы можете указать максимальную частоту обновления для каждого клиента и каждой подписки, а также максимальную пропускную способность. Lightstreamer будет регулировать данные на лету, принимая во внимание не только емкость клиента, но и состояние сети.

При регулировании вы можете выбирать между совмещением обновлений (типично для данных фондового рынка) и их постановкой в ​​очередь.

...