2013-08-26 5 views
1

Я пытаюсь сделать logparser.py в проекте django, который анализирует данные, поступающие с разных серверов.Экспорт настроек django в мой файл python

И выполнив команду на терминале:

$ питон logparser.py

Эта ошибка приходит:

Traceback (most recent call last): 
    File "logparser.py", line 13, in <module> 
    SMTP_CONF = settings.SMTP_CONF 
    File "/home/arya/.virtualenv/Devel/.virtualenvs/hu/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/home/arya/.virtualenv/Devel/.virtualenvs/hu/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/home/arya/.virtualenv/Devel/.virtualenvs/hu/local/lib/python2.7/site-packages/django/conf/__init__.py", line 134, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'hma.settings' (Is it on sys.path?): No module named hma.settings 

мой logparser.py содержит:

import re 
import os 
import fnmatch 
import gzip 
import bz2 
from collections import defaultdict 
from django.core.mail import send_mail 
from django.core.mail.backends import smtp 
import smtplib 
from email.mime.text import MIMEText 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hma.settings") 
from django.conf import settings 
SMTP_CONF = settings.SMTP_CONF 

def send_email(self,fromaddress,toaddresses,content,subject): 
    smtp_server = SMTP_CONF["SERVER"] 
    smtp_username = SMTP_CONF["USERNAME"] 
    smtp_password = SMTP_CONF["PASSWORD"] 
    smtp_port = SMTP_CONF["PORT"] 

    msg = MIMEText(content, 'html', _charset='utf-8') 

    msg['Subject'] ='Alert message for bad and internal server error' 
    msg['From'] = fromaddress 
    msg['To'] = toaddresses 
    server = smtplib.SMTP(smtp_server,smtp_port) 
    server.starttls() 
    server.login(smtp_username,smtp_password) 
    server.send_mail(fromaddress,toaddresses,msg.as_string()) 
    server.quit() 
    return True 

Я знаю, что я что-то делаю с командой [python manage.py], но мне нужно запускать как это. Любое решение для этого экспорта настроек django для разделения файла python?

ответ

1

Ну, это точная Usecase, почему Django предоставила возможность создавать пользовательские команды. Вы можете использовать все функции django в своем скрипте, как ваш скрипт будет запущен внутри контейнера Django. Вот документация https://docs.djangoproject.com/en/dev/howto/custom-management-commands/.

1

Если вы не хотите использовать пользовательские команды управления, хотя есть простой способ запускать код в контексте Django. Проще говоря, в начале вашего файла python, который вы хотите запустить:

from django.conf import settings 

from django.core import management 
management.setup_environ(settings) 
Смежные вопросы