Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
NaName: в amount 9999.99 я потом выполняю вычисление и делаю округление до второго знака после запятой типа Decimal, ожидая .99 на выходе сериализатора. Но почему-то на выходе прилетает .9898. Впрочем - тут я начинаю подозревать что дело не в коде, а где-то в кешировании, так как оно включено на продакшене. Поскольку у меня нет идей, что в приведенном коде не то...
>>> from decimal import Decimal, ROUND_UP
>>> amount = 9999.99
>>> res = amount + amount*0.02
>>> res
10199.9898
>>> float(Decimal.from_float(res).quantize(Decimal('0.01'), rounding=ROUND_UP))
10199.99
То есть у меня все равно должно получится 10199.99 несмотря на тип float. У меня же упорно вылезает 10199.9898. Я прошу совета из-за чего такое может быть. Возможно кто-то сталкивался.
Ruchey: я, к примеру - использую javascript фреймворк angular, и им делаю нужные запросы через rest api на django, и в зависимости от полученных данных, отрисовываю интерфейс.
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
Дошли руки проверить. Нет - не работает. На моменте когда пытаюсь вычитать очередной байт - работа кода останавливается. Следующий байт уже не приходит.
Евгений Самсонов: ну так могут быть проблемки - особенно при работе с тем же деревом каталогов windows. Все таки эти утилиты работают в непривычном для себя окружении. Поэтому я использую cygwin для несложных задач.
Иван: В последних версиях Django имеется возможность указывать свою кастомную модель юзера. Создаете ее, указываете в settings.py. Читаете в доках что добавить к своей кастомной модели. Добавляете - и работаете уже со своей моделью пользователя. Я просто привел пример - как вы свою модель назовете - User или еще как - собственно не важно. Данное описание поля просто указывает что можно ссылаться на инстансы своей же модели.
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
Спасибо! Попробую с буфером. Там же если пакет меньшим размером придет - в data будет пакет нужного размера? А то там пакеты в бинарном виде определенного (разного размера) приходят. И данные буквально по байтам разбирать надо.
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
Tark: Если тупо выйду после вычитки первого пакета - данные остальных пакетов потеряются. Если я попытаюсь вычитать пакет после прекращения отсылки данных то в этом месте процесс останавливается, поскольку процедура self.packet.read() не сможет вычитать пакет и программа отвалится по таймауту, поскольку сервер в ответ ничего отсылать уже не будет. PHP тупо выходит по EOF. Как сделать это на Питоне - я не нашел.
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
Tark: я читаю пакет побайтово, делаю парсинг данных. Далее если сервер отправляет данные - я должен получить следующий пакет. Если нет - то прерваться и продолжить дальнейшее выполнение.
Владимир Куц
@fox_12 Автор вопроса, куратор тега Python
Да - именно в этом проблема. Мне каким-то образом нужно перехватить момент, когда все данные вычитаны. Проблема в том, что после чтения текущего пакета, следующий пакет может придти, а может и нет. PHPс этим справляется, просто ожидая eof. В Питоне я не нашел как это сделать.
Лариса: ну так приведите более полные данные - используемые модели, используемую БД... По первоначальной постановке вопроса "что означает эта ошибка" без каких-либо доп. данных, ничего кроме гугления не посоветуешь.