0

ターミナルからローカルにホストされている mongodb データベースにツイートを取り込むことができる Python で記述されたスクリプトがあります。アップタイムを改善するために、このスクリプトを Heroku でリモートでホストし、消費されたツイートを MongoHQ でホストされているデータベースに送信したいと考えています。Django を使用せずにこれを行いたいので、Flask フレームワークを使用してアプリを Heroku にデプロイします (ここで説明: https://devcenter.heroku.com/articles/python )。

このセットアップを使用して単純な「hello world」アプリを実行すると、すべて問題ありません。ただし、ツイートを消費するアプリを実行しようとすると、すぐにクラッシュします。Flask/Heroku/MongoHQ セットアップで動作するようにアプリを変更するにはどうすればよいですか? ソースコードは次のとおりです。

import json
import pymongo
import tweepy

consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)


class CustomStreamListener(tweepy.StreamListener):
    def __init__(self, api):
        self.api = api
        super(tweepy.StreamListener, self).__init__()

        self.db = pymongo.MongoClient().test

    def on_data(self, tweet):
        self.db.tweets.insert(json.loads(tweet))

    def on_error(self, status_code):
        return True # Don't kill the stream

    def on_timeout(self):
        return True # Don't kill the stream


sapi = tweepy.streaming.Stream(auth, CustomStreamListener(api))
sapi.filter(track=['rooney'])

私はプログラミングにまったく慣れていないので、この問題の解決策は非常に簡単であると思います。しかし、私は立ち往生しており、実際に進歩するためにいくつかの助けを借りることができます.

4

1 に答える 1

0

詳細な情報がないとデバッグするのは難しいですが、私の最初の推測では、依存関係がインストールされていないということです。

Heroku はクリーンな Python 環境を提供します。tweepyただし、デフォルトではインストールされないような特別なライブラリが必要です。したがって、Heroku にこれらのインストールを知らせる必要があります。

pip と、使用しようとしているすべてのライブラリとバージョン番号を一覧表示する requirements.txt ドキュメントを使用する必要があります。

https://devcenter.heroku.com/articles/python-pip

于 2013-08-09T23:26:50.117 に答える