How do I run my Flask app remotely using MongoHQ and Heroku (Python)
Question: I have a script written in Python that lets me consume tweets from Terminal
into a locally hosted mongodb database. To improve uptime, I would like to
host this script remotely on Heroku and to shoot the consumed tweets into a
database hosted with MongoHQ. As I would like to do this without using Django,
I use the Flask framework to deploy the app to Heroku (described here:
<https://devcenter.heroku.com/articles/python>).

When I run a simple "hello world" app using this setup, everything is fine.
However, when I try to run my tweet consuming app, it immediately crashes. How
can I change my app to that it will work with the Flask/Heroku/MongoHQ setup?
The source code is:

    
    
    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'])
    

I am completely new to programming so I imagine the solution to this problem
might well be quite straight forward. However, I am stuck and could really use
some help to progress.


Answer: It's hard to debug without more information, but my first guess is that you
don't have the dependancies installed.

Heroku gives you a clean python environment. However, you need special
libraries like `tweepy` that don't get installed by default. Thus, you have to
let Heroku know to install these.

You'll need to use pip and a requirements.txt document which lists out all the
libraries that you are trying to use as well as what version numbers.

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

