Dimka665
Март 31, 2009 13:37:50
Решил написать первое джанго-приложение - мониторинг игровых серверов.
Схемка работы такая:
1. При http-запросах, используя джанговский орм, из бд выбирается статистика игровых серверов - текущее кол-во игроков, название карты и т.д. С этим проблем нет.
2. Каждые пять минут эта информация должна обновляться, естественно, используя джанговские модельки, то есть, этот код должен запускаться вместе с джангой, останавливаться тоже вместе с джангой и иметь доступ к моделям/орм, использовать джанговские настройки БД.
Это возможно легко и просто и красиво сделать стандартными джанговыми средствами?
Dimka665
Март 31, 2009 14:37:11
Daevaorn
Dimka665
Это возможно легко и просто и красиво сделать стандартными джанговыми средствами?
http://webnewage.org/2008/2/5/komandovat-paradom-budet-django/
я это несколько раз читал))) так и не вкурил как эта штука может мне помочь)
мне надо создать команду, которая будет выполнять обновление статистики?
где и как ее вызывать?
poltergeist
Март 31, 2009 15:25:09
Вот так я обхожусь, если что-то нужно потестить на скорую руку не пользуясь ./manage.py shell
(скрипт просто лежит в корне проекта)
import os, sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from apps.account.models import Account
print Account.objects.all()
Но кошернее наверное вашу задачу решить с помощью команд.
Где командам место:
http://docs.djangoproject.com/en/dev/howto/custom-management-commands/#howto-custom-management-commandsПростой пример:
http://code.djangoproject.com/browser/django/trunk/django/core/management/commands/cleanup.py
Александр Кошелев
Март 31, 2009 15:51:54
Dimka665
я это несколько раз читал))) так и не вкурил как эта штука может мне помочь)
Это штука как раз поднимает окружение джанги вокруг какого-то функционала, который вы напишите в методе Command.execute()
Dimka665
мне надо создать команду, которая будет выполнять обновление статистики?
Да, например назвав её collectstats.py
Dimka665
где и как ее вызывать?
А вызывать просто
Dimka665
Март 31, 2009 16:00:37
мне надо чтобы эта штука запускалась при старте сервера и сдыхала вместе с ним.
где мне выполнять эту команду?
Александр Кошелев
Март 31, 2009 17:05:37
Dimka665
мне надо чтобы эта штука запускалась при старте сервера и сдыхала вместе с ним.
Такого не бывает. В общем случае невозможно выполнять что-то “параллельно” веб-серверу.
Dimka665
где мне выполнять эту команду?
Выполнять её на сервере. Если нужно с интервалами, то вставить в cron.
Dimka665
Апрель 2, 2009 15:57:23
в течении двух дней заставлял джангу увидеть мою команду!!!
че я только не пробовал - ничего не помогало!
в итоге, исправил название папочки “managment” на “management” и заработало =)
спасибо всем за помощь.