В джанго есть кастомные команды. Почему-то я открыл их для себя не так давно, о чём жалею. Вся прелесть кастомной команды в том, что она сама настраивает DJANGO_SETTINGS_MODULE. Раньше я делал это руками, что меня изрядно раздражало. А если скрипт лежал ещё и не в корне проекта, то приходилось также пихать в sys.path этот самый корень, что проимпортировать потроха проекта.
Допустим скрипт лежит в %ROOT%/app/bin/script.py. Раньше бы я написал такую кашу в начале этого скрипта:
import sys
import os
from os.path import join, dirname, realpath
sys.path.insert(0, dirname(dirname(realpath(__file__))))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings']
Как раз эту проблему кастомная команда решает автоматически. Очень удобно оформлять различные скрипты, которые запускаются по крону, в виде кастомных команд.
Сегодня в очередной раз полез в гугль искать бота — пусть даже не на питоне — для повседневных нужд и наткнулся на этого чудо-юдо-гозер-бота Я уже давно хотел запустить какого-нить бота на канал pydev@conference.jabber.ru — пускай там и сидит всего два человека — чтобы логировать конференцию в базу данных. Думаю, с gozerbot всё получится.
Ковырялся с ботом только пару часов — много понравилось:
-
внятная документация на сайте
-
много плагинов
-
можно говорить о неком юзабилити: бот автоматически зарегал аккаунт, когда не смог авторизоваться; плагины можно перезагружать командой; можно всего бота перезапускать; когда я добавил бота на канал pydev, он запомнил это и при следующем запуске сам туда зашёл; можно ставить плагины из удалённого репозитория
-
программа производит впечатление вменяемого творения. Есть такие вещи, как руководство по изготовлению новых плагинов или обзор узловых точек программы.
Признаюсь, я весь пост высосал из пальца… На самом деле я просто хотел поделиться ссылкой на гозербота, но ведь публиковать одну лишь голую ссылку — это совсем неприлично? :-)
UPD: Товарищи гавнооптимизаторы, почему вы срёте ссылками на свой гавносателлиты в этот и только этот пост на блоге? Чем он вас так привлекает? Я удаляю любой комментарий, автор которого ссылается на подозрительный гавносайт. Пожалуйста, не тратье своё и моё время.
Знаю, знаю, я уже два раза писал, что сделал эту библиотеку. Этот раз, надеюсь, последний :-)
На этот раз я решил сделать порт максимально приближенным к PHP версии: та же структура кода, те же имена переменных, те же форматы данных. Т.к. PHP версия забирает данные с сервера в том виде, как их сериализует PHP, то пришлось заюзать вот эту штуку для распаковки данных.
Сегодня мои ручки добрались таки до pybb и я смог завершить одно очень важное дело. Раньше при просмотре любого экрана количество запросов к базе данных переваливало за сотню. Сейчас на каждый экран приходится около 10-15 запросов. Это не верх эффективности, но, по крайней мере, такое число уже не заставляет шевелиться волосы на голове :-)