Kirill
End of script output before headers: index2.py
Kirill
Какие хидеры имеются в виду?
Maxim
Мне кажется, если у тебя есть железобетонные аргументы, то всё будет впоряде. А еще мне кажется, что ты сам не уверен, есть они у тебя или нет.
Что тут сложного-то для понимания? Jquery подход это лапша. Это удар по производительности. Это невозможно поддерживать. Невозможно написать веб-приложение на jquery. Только классический многостраничный сайтик с небольшой примесью динамики. Если все это устраивает тебя и заказчика (если он вообще способен оценить такие риски), то пиши, пожалуйста. К чему критика нормального современного подхода по построению веб-приложения — мне непонятно.
Tishka17
тогда сравни производительность в debug режиме
а ты прям пишешь какое поле не распарсилось или только общую ошибку скрываешь?
Tishka17
тогда сравни производительность в debug режиме
окей в дебаг моё 13.627795609 твое 11.553842406
Tishka17
тут никуда разница не делась
Tishka17
кстати глянул сорцы датаклассов, они там тоже exec юзают =))
Alexander
а ты прям пишешь какое поле не распарсилось или только общую ошибку скрываешь?
если убрать импорты, которые нужны для работы метода, то получится что-то типа такого
Alexander
Alexander
после того, как я еще добавил int() для преобразования в int, тоже скорость упала немного
Alexander
валидации у меня нет пока что никакой
Alexander
я говорил про проверку на отсутствие полей обязательных скорее
Eldar
правила читай
Alexander
просто надо с умом пользоваться
Tishka17
круто. У меня int юзается, да. А так если поля нет у меня возвращает так: … dataclass_factory.exceptions.InvalidFieldError: Invalid data at path [b, member]: __init__() missing 1 required positional argument: 'b'
Kirill
Никто мне не может помочь :(
Tishka17
я говорил про проверку на отсутствие полей обязательных скорее
ты кстати сделал чтобы дефолты учитывались?
Alexander
помнится, ты что-то такое спрашивал, но у меня все работало)
Tishka17
а, ок
Maxim
Никто мне не может помочь :(
Сформулируй нормально проблему. Что сказал гугл? Где пример файла?
Tishka17
ну я вот добавил путь в исходном словаре, кто-то точнее пул реквест прислал давно
Проксимов
Я нашёл причину
Kirill
Сформулируй нормально проблему. Что сказал гугл? Где пример файла?
Проблема: без #!Python не запускается скрипт из Apache. Советы Гугла сводятся к Options +ExecCGI
Kirill
Addhandler cgi-script .py
Tishka17
вы тут за свои реализации сериализаторов спорите?)
почему спорим, обсуждаем что могут
Tishka17
я свою немного только что пропатчил. Заменил обход по items() в дикте на обход тупла
Tishka17
сразу стало быстрее
Kirill
Сейчас ссылку дам на https.conf
Tishka17
Проблема: без #!Python не запускается скрипт из Apache. Советы Гугла сводятся к Options +ExecCGI
что за #!Python? shebang? шебанг нужен всегда, не надо его игнорировать
Tishka17
и апач выкини
Tishka17
gunicorn/uwsgi тебе нужны
Mark
gunicorn/uwsgi тебе нужны
что нынче модно, кстати?
Tishka17
го
Mark
глубоко.
Kirill
Прошу прощения, в питоне новичок
Kirill
Неужели без шебанга не обойтись?
Tishka17
Чта
ну в запускамом файле шебанг - полезная вещь
Tishka17
в модулях пофиг
Tishka17
Неужели без шебанга не обойтись?
шеьанг для птиона - #!/usr/bin/env python
Tishka17
Чем?
тем что можно написать ./app.py и он нормлаьно запустится
Tishka17
Kirill
а чем он тебе мешает?
Переносимость теряется
Tishka17
ээ
Tishka17
переносимость куда?
Tishka17
это комментарий, он учитывается только теми кто его умеет
Kirill
С тестовой машины на сервер, например
Проксимов
тем что можно написать ./app.py и он нормлаьно запустится
И смысл если всё равно запускать через гуникорн/uwsgi?
Tishka17
а что ты там обходил такое?
парсеры полей по именам
Kirill
Нет ли директивы в httpd.conf, его заменяющей?
Alexander
парсеры полей по именам
а теперь у тебя они не в словаре, а в кортеже хранятся?
Alexander
угу
и это стало быстрее?
Tishka17
да, процентов на 5-10
Alexander
так сложность же выросла
Tishka17
нет
Tishka17
все равно полный перебор
Alexander
то есть у тебя не задача найти парсер по типу или имени была?
Tishka17
у тебя вместо этого просто отдельный вызовы .get() по полям в коде
Tishka17
то есть у тебя не задача найти парсер по типу или имени была?
да не, задача распарсить все поля. Для каждого поля заранее находится парсер
Tishka17
и получаем тупл парсеров с именами полей
Alexander
а, поэл
Kirill
Совет насчёт замены Apache на nginx я уже услышал. Интересно всё же про апач
Tishka17
было: field_info = { f: (f.rstrip("_") if trim_trailing_underscore else f, p) for f, p in parsers.items() } return lambda data: cls(**{ field: info[1](data[info[0]]) for field, info in field_info.items() if info[0] in data })
Tishka17
стало: field_info = tuple( (f, f.rstrip("_") if trim_trailing_underscore else f, p) for f, p in parsers.items() ) return lambda data: cls(**{ field: parser(data[name]) for field, name, parser in field_info if name in data })
Tishka17
дополнительно убралось получение по индексу, это ещё 5% дало где-то