overrides.SiteRoot

0 views
Skip to first unread message

u960

unread,
Apr 2, 2010, 6:20:02 AM4/2/10
to Пишем на Python лучше
AttributeError: 'Request' object has no attribute 'script_info'

Sergey Schetinin

unread,
Apr 2, 2010, 6:28:09 AM4/2/10
to better-p...@googlegroups.com
Поправил. Это пока черновик, чуть позже доведу до ума.

2010/4/2 u960 <phli...@gmail.com>
AttributeError: 'Request' object has no attribute 'script_info'

--
Группа: http://groups.google.com/group/better-python-ru
Отписка: better-python-...@googlegroups.com

To unsubscribe, reply using "remove me" as the subject.



--
Best Regards,
Sergey Schetinin

http://s3bk.com/ -- S3 Backup
http://word-to-html.com/ -- Word to HTML Converter

Алексей С.

unread,
Apr 2, 2010, 7:07:01 AM4/2/10
to better-p...@googlegroups.com
это мидлварь?

если запрос на robots.txt или на favicon.ico то, то смотриться, если
есть своё приложение, то отдает его,
если нету, то на robots.txt отдается ответ с кодом 200 и нулевой
длины? а на favicon.ico?
или не так всё понял?)

у меня nginx отдает эти файлы, это первое что пришло в голову, когда
мое питон приложение ложились из за этих запросов.

2 апреля 2010 г. 14:28 пользователь Sergey Schetinin <mal...@gmail.com> написал:

Алексей С.

unread,
Apr 2, 2010, 7:18:33 AM4/2/10
to better-p...@googlegroups.com
а могли бы обьяснить вот эту строчку
self.overrides = self.overrides.copy()


2 апреля 2010 г. 14:28 пользователь Sergey Schetinin <mal...@gmail.com> написал:

Sergey Schetinin

unread,
Apr 2, 2010, 8:36:29 AM4/2/10
to better-p...@googlegroups.com
2010/4/2 Алексей С. <phli...@gmail.com>

это мидлварь?

если запрос на robots.txt или на favicon.ico то, то смотриться, если
есть своё приложение, то отдает его,
если нету, то на robots.txt отдается ответ с кодом 200 и нулевой
длины? а на favicon.ico?
или не так всё понял?)

На фавикон по умолчанию выдается 404
 

у меня nginx отдает эти файлы, это первое что пришло в голову, когда
мое питон приложение ложились из за этих запросов.

Да, это мидлварь. Задумка в том, что обычно делаю что-то такое:

root = PathMatch(app)
root['/robots.txt'] = Response(...)
root['/favicon.ico'] = HTTPMovedPermanently(location='http://static....')

Чтобы этого не делать задуман RootApp. Цель не столько в том чтобы эти запросы не доходили до основного приложения (оно от них конечно в любом случае не должно падать) а чтобы было проще решать общие задачи, положим так:

root = RootApp(app)
root.robots.body = "User-agent: *\nDisallow: /"
root.favicon = FileApp(...)
root.google_verification = 'aasdasdasdasd' # это для google webmaster tools, еще не реализовано

Ну и всякие генерилки полиси для XSS можно прикрутить туда же.

overrides копируется чтобы можно было менять root.overrides и это не влияло на другие экземпляры. Если бы не копировали, то overrides был бы общим для всех.


 
2 апреля 2010 г. 14:28 пользователь Sergey Schetinin <mal...@gmail.com> написал:
> Поправил. Это пока черновик, чуть позже доведу до ума.
>
> 2010/4/2 u960 <phli...@gmail.com>
>>
>> AttributeError: 'Request' object has no attribute 'script_info'
>>
>> --
>> Группа: http://groups.google.com/group/better-python-ru
>> Отписка: better-python-...@googlegroups.com
>>
>> To unsubscribe, reply using "remove me" as the subject.
>
>
>
> --
> Best Regards,
> Sergey Schetinin
>
> http://s3bk.com/ -- S3 Backup
> http://word-to-html.com/ -- Word to HTML Converter
>
> --
> Группа: http://groups.google.com/group/better-python-ru
> Отписка: better-python-...@googlegroups.com

--

Алексей С.

unread,
Apr 2, 2010, 9:37:22 AM4/2/10
to better-p...@googlegroups.com
2 апреля 2010 г. 16:36 пользователь Sergey Schetinin <mal...@gmail.com> написал:

> 2010/4/2 Алексей С. <phli...@gmail.com>
>>
>> это мидлварь?
>>
>> если запрос на robots.txt или на favicon.ico то, то смотриться, если
>> есть своё приложение, то отдает его,
>> если нету, то на robots.txt отдается ответ с кодом 200 и нулевой
>> длины? а на favicon.ico?
>> или не так всё понял?)
>
> На фавикон по умолчанию выдается 404
>
>>
>> у меня nginx отдает эти файлы, это первое что пришло в голову, когда
>> мое питон приложение ложились из за этих запросов.
>
> Да, это мидлварь. Задумка в том, что обычно делаю что-то такое:
>
> root = PathMatch(app)
> root['/robots.txt'] = Response(...)
> root['/favicon.ico'] = HTTPMovedPermanently(location='http://static....')
>
> Чтобы этого не делать задуман RootApp. Цель не столько в том чтобы эти
> запросы не доходили до основного приложения (оно от них конечно в любом
> случае не должно падать) а чтобы было проще решать общие задачи, положим
> так:
>
> root = RootApp(app)
> root.robots.body = "User-agent: *\nDisallow: /"
> root.favicon = FileApp(...)
> root.google_verification = 'aasdasdasdasd' # это для google webmaster tools,
> еще не реализовано

Какие то очень странные задачи, что же это за задачи такое общие,
чтобы приходилось на лету меня содержимое файла robots.txt
и еще программно отдавать графику.

favicon и роботс. дай бох раз в сто лет меняется

Sergey Schetinin

unread,
Apr 2, 2010, 9:45:28 AM4/2/10
to better-p...@googlegroups.com
2010/4/2 Алексей С. <phli...@gmail.com>

Какие то очень странные задачи, что же это за задачи такое общие,
чтобы приходилось на лету меня содержимое файла robots.txt
и еще программно отдавать графику.

favicon и роботс. дай бох раз в сто лет меняется


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

Алексей С.

unread,
Apr 2, 2010, 10:29:02 AM4/2/10
to better-p...@googlegroups.com
2 апреля 2010 г. 17:45 пользователь Sergey Schetinin <mal...@gmail.com> написал:

> 2010/4/2 Алексей С. <phli...@gmail.com>
>>
>> Какие то очень странные задачи, что же это за задачи такое общие,
>> чтобы приходилось на лету меня содержимое файла robots.txt
>> и еще программно отдавать графику.
>>
>> favicon и роботс. дай бох раз в сто лет меняется
>>
>
> Это не для того чтобы менять на лету, а для того чтобы сделать сайт за час и
> поставить там всё что нужно без настроек nginx и прочего.

то есть приоритет скорость развертывания

Если честно, то в этом я вообще не бум бум, на пхп как то проще было с
деплойтом,
а тут я потратил довольно много времени чтобы развернуть сайт,
топорным прямым способом,
пока яйца настроишь, пропишешь ручками, и всё такое.

просто поглядываю, на PasteScript и PasteDeploy, думаю что они отроют
мне таинсвтенные знания)
пока времени разобраться ними не было

>
>
> --
> Best Regards,
> Sergey Schetinin
>
> http://s3bk.com/ -- S3 Backup
> http://word-to-html.com/ -- Word to HTML Converter
>

Алексей С.

unread,
Apr 2, 2010, 2:28:43 PM4/2/10
to better-p...@googlegroups.com
> overrides копируется чтобы можно было менять root.overrides и это не влияло
> на другие экземпляры. Если бы не копировали, то overrides был бы общим для
> всех.

понятно. а ведь это можно вынести в конструктор, я так понимаю
....
def __init(self):
....
self.overrides = {'/robots.txt':'robots', '/favicon.ico' : favicon}
...

почему такой способ не айс?

Sergey Schetinin

unread,
Apr 2, 2010, 2:56:45 PM4/2/10
to better-p...@googlegroups.com
2010/4/2 Алексей С. <phli...@gmail.com>
Нормальный способ, так вышло просто потому что изначально строчки с копированием вообще не было.
Reply all
Reply to author
Forward
0 new messages