2013-07-05 2 views
0

저는 처음에는 파이썬으로 초보자였습니다. 그러나 장고 응용 프로그램과 tweetstream을 통해 트위터 스트리밍 API에 대한 연결을 설정했습니다.Python, 웹 응용 프로그램에서 지속적인 HTTP 연결 처리

응용 프로그램 내에서 다음을 수행하여 django 테스트 웹 서버를 통해 콘솔에 출력 된 트윗의 상수 스트림을 얻을 수 있습니다.

with tweetstream.FilterStream(arg, arg, arg, arg, arg) as stream: 
    for tweet in stream: 
     print tweet 

나는 또한 스트림을 정보를 쿼리 할 수 ​​있습니다.

my_tweetstream = tweetstream.FilterStream(arg, arg, arg, arg, arg) 
print my_tweetstream.variable 

이상적으로는, 나는 그것이 트윗을 로그인 할 수있어 있도록 tweetstream을 시작하려면, 또한 새로 고침에 연결을 조회하고이 연결되어있어 시간에 데이터를 반환 관리자 페이지를 방문 할 수있을 것 얼마나 많은 트윗이 반환되었는지 등

문제는 내가 지금까지 가지고있는 코드로 어떻게 할 수 있는지 잘 모른다. 예를 들어, 내가 그것을 '쿼리 할 수 ​​있도록'연결을 저장할 수 있습니까?

이 문제를 해결하기위한 올바른 접근법에 대해 설명해 주시겠습니까? 어떤 리소스가 문제를 더 잘 이해하는 데 도움이 될 수 있습니까?

미리 감사드립니다.

+2

및 데이터베이스에 넣어 테이블 또는 somesuch, 당신이 원하는 관리 정보와 함께, 얼마나 오랫동안 프로세스가 실행되었습니다. 그러면 Django 응용 프로그램은 데이터베이스에서 읽을 수 있습니다. – Aya

답변

1

나는 최근에 프로젝트에서이 작업을 수행했습니다. 스트림 소비자를 별도의 파이썬 프로세스로 실행해야한다. 장고 응용 프로그램의 일부가 될 필요는 없습니다.

기본적으로 내가했다 : 당신이 별도의 프로세스로이 작업을 실행하고 일부 기능에 트윗 데이터를 전달할 수 있습니다

from tweepy import OAuthHandler 
from tweepy import Stream 
from tweepy.streaming import StreamListener 

from myproject.myapp.utils import do_something_with_tweet 

class StdOutListener(StreamListener): 

    def on_data(self, data): 
     do_something_with_tweet(data) 
     return True 

def main(): 
    listener = StdOutListener() 

    auth = OAuthHandler(
     TWITTER_CONSUMER_KEY, 
     TWITTER_CONSUMER_SECRET) 

    auth.set_access_token(
     TWITTER_ACCESS_TOKEN, 
     TWITTER_ACCESS_SECRET) 

    try: 
     stream = Stream(auth, listener) 
     stream.filter(track=['#something', ]) 
    except (KeyboardInterrupt, SystemExit): 
     print 'Stopping Twitter Streaming Client' 


if __name__ == '__main__': 
    main() 

이 방법을 저장하거나 장고는 다른 곳에서 행복하게 실행할 수 있습니다 무엇이든합니다.

플러스 포인트는 비동기 작업에 트윗 데이터를 처리하기 위해 셀러리를 사용하는 것입니다 : 아마 별도의 배경 (데몬) 과정에서`tweetstream` 잡아 트윗이있을 것이다 https://celery.readthedocs.org

+1

사용자 정의 관리 명령으로 실행하는 경우 OP django 앱과 통합하는 것이 더 쉬울 수 있습니까? – dm03514

+0

답변 주셔서 감사합니다,하지만 내 주요 문제는 연결을 실행하고 정보를 저장하는 데 사용하지 않고, 나는 장고에서 실행중인 프로세스와 통신을 시도 막혔어요. – rix

+0

@ dm03514 예. 관리 명령을 사용하면 수명이 좀 더 쉬워지고 자동 재 장전을 시작할 수 있으므로 dev의 코드 변경이 다시 시작됩니다. – krak3n

관련 문제