Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2010 01:27:59

alexandre
От:
Зарегистрирован: 2010-11-16
Сообщения: 104
Репутация: +  0  -
Профиль   Отправить e-mail  

Микрофреймворки

То есть это получается что если программа написана на bottle разделена на несколько файликов и в каждом встречаются декораторы роутов то при возникновении ошибки потом будет много проблем?
А можно ли webob отнести к микрофреймворку подобно bottle?



Офлайн

#2 Ноя. 19, 2010 05:23:47

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Микрофреймворки

alexandre
То есть это получается что если программа написана на bottle разделена на несколько файликов и в каждом встречаются декораторы роутов то при возникновении ошибки потом будет много проблем?
А можно ли webob отнести к микрофреймворку подобно bottle?
я сейчас работаю над большим веб проектом написанным на bottle, около 50 модулей и пакетов. проблем нет.

Офлайн

#3 Ноя. 19, 2010 09:13:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Микрофреймворки

webob - библиотека а не фреймворк. Отличие серьезное.

Полсотни модулей - это еще совсем немного :)

Я не утверждал, что проблемы обязательно будут. Скорее всего получится их как-то обойти.
Беда в другом - ошибка может появится неожиданно. И это - нехорошо.



Офлайн

#4 Ноя. 19, 2010 21:05:29

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Микрофреймворки

Андрей Светлов
Ошибку воссоздать довольно легко - но еще легче забыть о такой особенности.
можете привести пример?

Офлайн

#5 Ноя. 22, 2010 13:44:50

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Микрофреймворки

Это случается, когда имеем бардак в путях импорта.
Например

package
__init__.py
lib.py
utility.py
common.py
main.py

Если
1. наша utility.py может запускаться как отдельный файл
2. при этом она желает делать что-то вроде import common
- самое простое решение написать sys.path.append('..') или нечто вроде того.

Так делать неправильно - и все же я видел такой код раз за разом.
Тогда получается, что lib.py можно импортировать двумя способами:
import lib
import package.lib

Равно как utility.py на самом деле - три разных модуля: __main__, utility, package.utility.
В результате код utility.py может быть выполнен три раза.

Чтобы избежать такую ситуацию я стараюсь вообще не делать модули, которые можно запустить непосредственно.
Параметр scripts в setup.py позволяет создавать запускалки по проименованым ресурсам. В нашем случае было бы package.utility:main
И тем не менее - видел вышеприведенный мусор, и далеко не один раз.



Офлайн

#6 Ноя. 22, 2010 14:17:54

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Микрофреймворки

> В результате код utility.py может быть выполнен три раза.
Жесть. Точно, проверил. Не знал.

> я стараюсь вообще не делать модули
А я не стараюсь, просто не делаю. Не вошло в привычку писать всё самостоятельно с самого низкого уровня, так что для выполнения различных команд приложения всегда используются, либо Twisted, либо Paste, либо Django, ну или ещё что-нибудь.

p.s. Не читал статью, с анг. у меня не очень да и нет особого желания. Если судить по твоим словам, то проблемы там описаны достаточно элементарные (для меня) и мне на них напороться не грозит.

..bw



Офлайн

#7 Ноя. 22, 2010 14:24:15

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Микрофреймворки

Не жесть, а жизнь.
Вещи элементарные - но на них спотыкаются сейчас и будут это делать в обозримом будущем.



Офлайн

#8 Ноя. 22, 2010 16:13:47

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Микрофреймворки

я перед тем как использовать пакеты, делал тестирования всякие.
сейчас у меня так: если надо вызвать ф-ию из lib.py, я создам в корне util.py и буду из неё запускать, и все остальные через эту же. При этом util.py никто не имеет права заинклудить.

> bw
> А я не стараюсь, просто не делаю
когда проект доходит до больших размеров,( и над которым работают несколько человек), с пакетами/модулями гораздо удобней

вообщем при правильных импортах, @route'ы не страшны

Офлайн

#9 Ноя. 22, 2010 16:31:15

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Микрофреймворки

При правильных - да.

К слову, правильная программа работает всегда корректно. Только где они, правильные? :D



Офлайн

#10 Ноя. 23, 2010 12:24:06

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Микрофреймворки

>>> я стараюсь вообще не делать модули
>> А я не стараюсь, просто не делаю
> когда проект доходит до больших размеров,( и над которым работают несколько человек), с пакетами/модулями гораздо удобней

Не до конца процитировал. Подразумевалось:

> которые можно запустить непосредственно

..bw



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version