2012-07-05 2 views
1

전자 메일받은 편지함에서 특정 전자 메일을 검색하는 스크립트가 있습니다. 그 부분이 잘 작동하고 내가 관심있는 데이터를 얻을 수 있습니다. 이제 데이터를 가져 와서 정보를 표시하는 데 사용되는 장고 앱에 추가하고 싶습니다.주기적으로 Python 스크립트를 실행하여 데이터를 장고 앱으로 가져올 수 있습니까?

CRON 작업에서 스크립트를 실행하여 주기적으로 새 정보를 얻을 수 있지만 어떻게 데이터를 장고 응용 프로그램에 가져올 수 있습니까?

Django 서버는 Apache/FastCGI의 Linux 상자에서 실행됩니다.

[편집] - Srikar의 질문 When you are saying " get that data into the Django app" what exactly do you mean? ...

에 대한 응답으로 장고 애플 리케이션이 다음 뷰의 시리즈를 통해 표시 할 수 있도록 편리한 형태로 데이터를 저장하기위한 책임이 있습니다. 따라서 앱에는 들어오는 데이터를 저장하기위한 적절한 멤버가 포함 된 모델이 포함됩니다. Django에 연결하여 모델 객체의 새로운 인스턴스를 만들고 Django에 저장하는 방법을 확실히 모르겠습니다.

답변

0

"DJango 앱에 데이터 가져 오기"라고 말하면 정확히 무엇을 의미합니까?

나는 (mysql과 같은) 일종의 데이터베이스를 사용하고 있다고 생각한다. cronjob에서 수집 한 데이터를 장고 앱이 액세스하는 각각의 테이블에 삽입하십시오. 또한이 cron 데이터를 사용자가 액세스하는 동일한 테이블에 삽입하십시오. 그렇게하면 동일한 테이블에서 데이터에 액세스 할 때 앱을 사용하는 사용자에게 변경 사항이 즉시 반영됩니다.

+0

내가 명확하게 내 질문을 편집했습니다 –

0

가장 좋은 방법은 무엇입니까?

장고 측에서 데이터 수신을 처리하고 스크립트가 해당보기에 등록 된 URL에서 HTTP POST를 수행하게하십시오.

또한 스크립트 내에서 모델 등을 가져올 수도 있지만 아주 좋은 생각이라고 생각하지 않습니다.

+0

웹 서버를 통해 나에게 비효율적 인 방법으로 백엔드에 연결하는 대신 어떻게 할 것인가? –

1

사용자 지정 관리 명령을 작성하여 필요에 따라 데이터를로드하고 cron 작업을 통해 해당 명령을 실행할 수 있습니다. 참조 할 수 있습니다 Writing custom commands

기존의 loaddata 명령을 사용해 볼 수도 있지만 app 디렉토리에 추가 된 fixture에서 데이터를로드하려고 시도합니다.

+0

유망 해 보입니다. CRON에서 어떤 명령을 사용하여 명령을 호출합니까? –

+0

@JonCage cron에서 명령을 실행하는 방법은 http://stackoverflow.com/questions/1601153/django-custom-command-and-cron을 참조하십시오. – Rohan

4

나는 Celery을 찾고 있습니다.

+0

어떻게하면 DJango 앱에 데이터를 삽입 할 수 있습니까? 내가 알기로는 CRON 작업을 대체 할뿐, 뭔가 빠진 것이 아닌가? –

+0

아, 알았어 배경으로 좀 더 이해가 가는데 : http://www.slideshare.net/idangazit/an-introduction-to-celery –

+0

더 많은 문서보기 : http://celery.github.com/celery/django/first -steps-with-django.html –

0

스크립트에서 HTTP Post 요청을 보내도록하십시오. 이것은 도서관입니다. 요청입니다.

>>> files = {'report.xls': open('report.xls', 'rb')} 

>>> r = requests.post(url, files=files) 
>>> r.text 

수신 측에서 웹을 사용할 수 있습니다.평은 POST 요청 가져 오기 웹의 수신 측에 X

당신이 원하는 무엇이든 할이

x = web.input() 

같은 정보를 처리하고 예를

의 포스트

를 처리하는 함수를 작성합니다 다시 메시지를 보낼 HTTP를 사용하려면 갔다 그냥 스크립트가 .txt 파일로 이메일 정보를 작성하고 다음 장고를 가질 수있다 해달라고

def POST(self): 

     x = web.input() 
+0

위의 스 니펫에있는 요청 및 웹은 무엇입니까? 보다 완벽한 예를 제시 할 수 있습니까? –

+0

요청 문서는 http://docs.python-requests.org/en/latest/user/quickstart/#more-complicated-post-requests에서 찾을 수 있으며 요청 처리를위한 web.py는 http : //에서 찾을 수 있습니다. webpy.org/ 나는 방금 두 개의 libs를 사용하여 수행하려는 것과 똑같은 일을 기본적으로 수행하는 프로그램을 작성했습니다. – SJP

+0

그래서 web.py는 POST/GET 요청을 처리하는 경량 서버입니까? 그게 내가 원하는 건 아니야 - 나는 데이터를 받기 위해 서버에 DJango를 가지고있다. 나는 어떻게 DJango의 관련 비트를 불러 와서 데이터를 가져올 지 확신하지 못한다 ... –

0

응용 프로그램은 파일을 열고 그것을 읽습니다.

편집 :

그런 다음 말 오전 8시에서 전자 메일을 읽을 텍스트 파일 info.txt에 기록하기 위해 CRON 작업을 설정할 수 있습니다. 이 코드는

import time 
    if '9' == time.strftime("%H"): 
     file = open(info.txt) 
     info = file.read() 

과 같이 10am까지 파일을 검사합니다. 한 번만 확인하려면 if 문을 추가하십시오.

+0

어떻게 DJango 앱을 읽을 것인가? 파일들? 수표를 주기적으로 확인하고 정보를 자동으로 채우고 싶습니다. DJango가 이러한 .txt 파일을 읽으려면 어떻게해야합니까? –

+0

내 게시 된 답변보기. – SJP

+0

그건 도움이되지 않습니다 - 어디에서 전화할까요? 모델? 관점? –

0

나는 똑같은 짓을했다.

우선, 내 스크립트는 이미 이메일을 구문 분석하여 db에 저장 했으므로 settings.py에서 db를 설정하고 python manage.py inspectdb을 사용하여 해당 db를 기반으로하는 모델을 만들었습니다.

그런 다음 데이터베이스의 정보를 표시하는보기를 작성하는 것입니다.

스크립트에서 아직 db를 사용하지 않으면 저장하려는 정보로 모델을 만든 다음 모델에서 설명하는 테이블에 스크립트를 쓰도록하는 것이 간단합니다.

1

초고 장고 앱을 잊어 버리십시오. 그것은 단지 파이썬 코드의로드입니다.

이 의미는 Python 스크립트는 장고 앱에있는 데이터베이스 모델을 가져 와서 프로젝트의 표준 모듈에서 사용하는 것처럼 자유롭게 사용할 수 있습니다.

유일한 차이점은 장고가 이러한 모듈을 사용하여 작업하는 데 필요한 모든 것을 가져올 때주의를 기울여야한다는 것입니다. 반면 요청이 일반 웹 인터페이스를 통해 입력되면이를 처리 할 수 ​​있습니다.

Django와 필요한 models.py/다른 필요한 모듈을 가져 오면 앱에서 작동합니다. 그것은 당신의 코드이지 블랙 박스가 아닙니다. 원하는 곳에서 가져올 수 있습니다.

EDIT : 사용자 정의 관리 명령에 대한 Django 문서에 대한 Rohan의 응답 링크는 확실히 위에서 말한 것을 수행하는 가장 고통스러운 방법입니다.

관련 문제