Tishka17
А почему не протобуф?
Tishka17
А. Окей
Tishka17
В общем, если интересно, можешь глянуть мою либу. У нас с машумару фичи немного разные, вдруг тебе подойдёт. Но конечно из коробки она в блоб не сериализует
Tishka17
Привет!
Помнится я писал о том, чтобы вытащить msgpack в extras, так вот теперь он мне понадобился :)
У меня есть два приложения (на C++ и Python), которые взаимодействуют между собою по ZeroMQ (шлются большие объёмы данных и часто, поэтому производительность и пропускная способность важна). Хочу использовать эту либу для сериализации/десериализации в msgpack/обратно (который шлётся через ZeroMQ). У меня на одном сокете могут быть сообщения разных типов, и, соответственно, с разными данными внутри. Я думал сделать что-то типа:
@dataclass
class Message(DataClassMessagePackMixin):
protocol_version: int
message_type: MessageType # IntEnum
data: Union[DataA, DataB, ...]
Но потом увидел, что Union стоит только в планах.
Можно, конечно, просто dict в msgpack.packb запихивать, но хочется использовать преимущества статического определения типов сообщений.
Посоветуйте, пожалуйста, альтернативное решение.
https://github.com/Tishka17/dataclass_factory/issues/15 может эти примеры ещё пригодятся
Tishka17
Roman
Tishka17
А. Угу
Roman
Tishka17
Да скорее всего у него тоже работает, просто логика инита немного другая видимо
Roman
Tishka17
Ну это если нужен полиморфик
Roman
Tishka17
Tishka17
А так Юнион вообще сразу работает если поля разные
Tishka17
Tishka17
Хз уже как апи упростить, много фич копится, все не впихнешь удобно
Tarrac
подскажите, почему не заканчивается рекурсия? https://dumpz.org/ak5M5n3dxnnc
Tarrac
не пойму, где ошибся
Tishka17
Но явная проверка типа должна быть быстрее, иначе он будет целиком пытаться распарсить всё
Tishka17
Tarrac
я проверяю, есть ли на странице ссылки на нужные файлы и если нет - иду на следующую страницу
Tarrac
на третьей странице ссылки есть, значит все, надо return делать
Tishka17
1. Не надо локальные переменные называть с чёрточки
2. Урлы парсят на части не так. Рискуешь огрести проблемы на чем-то типа "http://ya.ru/file.zip?secret=1/2"
3. Два раза генераторные выражение в лист конвертишь? Зачем? Можно просто скобки поменять на квадратные
4. Непонятно зачем здесь рекурсия, а не цикл
5. Ты вообще уверен, что оно реально разные страницы получает?
Tishka17
Tishka17
От машумару отстаю по скорости где-то на 10%
Roman
Не. Никаких копи
Ну я так и думал, просто на всякий случай спросил. Ну тогда должно всё быстро быть.
Tishka17
Я с его подачи упоролся по оптимизации, но так и не смог догнать целиком
Tarrac
10
Tishka17
Tarrac
блин
Tarrac
внезапно
Tishka17
Генераторы не многоразовые как бы
Amaro
Просто вместо круглых скобочек надо квадратные написать.
Alexander
Привет!
Помнится я писал о том, чтобы вытащить msgpack в extras, так вот теперь он мне понадобился :)
У меня есть два приложения (на C++ и Python), которые взаимодействуют между собою по ZeroMQ (шлются большие объёмы данных и часто, поэтому производительность и пропускная способность важна). Хочу использовать эту либу для сериализации/десериализации в msgpack/обратно (который шлётся через ZeroMQ). У меня на одном сокете могут быть сообщения разных типов, и, соответственно, с разными данными внутри. Я думал сделать что-то типа:
@dataclass
class Message(DataClassMessagePackMixin):
protocol_version: int
message_type: MessageType # IntEnum
data: Union[DataA, DataB, ...]
Но потом увидел, что Union стоит только в планах.
Можно, конечно, просто dict в msgpack.packb запихивать, но хочется использовать преимущества статического определения типов сообщений.
Посоветуйте, пожалуйста, альтернативное решение.
Надо бы добавить Union, это да
Alexander
У меня просто не было острой необходимости в нем
Alexander
Если Any подойдёт вместо Union, можешь им воспользоваться
Tishka17
Tarrac
на первой странице может ничего не быть
Tishka17
И ещё: path в коде может вполне оказаться невалидным именем файла
Tishka17
Tarrac
от 0 до 10? _
Tishka17
Почему до 10?
Tishka17
У тебя рекурсия до 1000
Tishka17
Можешь и цикл так же
Tishka17
Или блин WHILE
Tishka17
def list_files(p):
# код парсинга
return [...]
def find_files():
for i in itertools.count():
files = list_files(i)
if files:
return files
Tishka17
Tarrac
https://dumpz.org/ak5M5n3dxnnc переписал без рекурсии
Tishka17
Tarrac
^
Tarrac
ой
Tishka17
;-)
Tarrac
все, убрал рекурсию
Tishka17
Точно?
Arkhat
Как добавить звуковое уведомление на джанго в pythonanywhere
Tishka17
Чо
Tishka17
Я не понял как эти три вещи связаны
Nikita
Arkhat
Использую pythoanywhere как сервак, звуковое уведомление должно поступить на фронте. Просто через js не получается
Nikita
Плохо делаешь видать
Tarrac
Tishka17
Tishka17
Покажи код
Tarrac
https://dumpz.org/ak5M5n3dxnnc
Tishka17
Arkhat
Фронт прослушивает веб сокет. При появление пуша приходит алерт. Но звука нет так как не может найти сам файл звука. Он есть и ссылка вроде правильная, ошибка 403 выводит
Tishka17
Хотя смотря что ты считаешь уведомдением
Tishka17
А
Tarrac
то, что я 2 раза пишу разные вещи в files сильно плохо?
Tishka17
403 - это не "не может найти"
Tishka17
но так как 5 строк, пофиг