【问题标题】:How can I run my script remotely storing data in database?如何运行我的脚本远程存储数据库中的数据?
【发布时间】:2013-08-01 02:08:36
【问题描述】:

我有一个脚本,它使用来自 twitter 的流 api 的推文到我的本地主机 mongodb。为了提高正常运行时间,我想远程运行它,将推文存储在“类似云的数据库”中,例如蒙古实验室。

这是我的脚本:

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=['Gandolfini'])

现在,我已经在 MongoLab 和 Heroku 上设置了帐户,但完全卡住了(我对所有编程都是新手)。我想,向前推进,我需要解决两个问题:i)如何使用 Heroku 托管我的脚本? ii) 如何将在 Heroku 中运行的脚本指向我的 Mongolab 帐户?有什么想法吗?

【问题讨论】:

    标签: python heroku pymongo mlab


    【解决方案1】:

    这是在 Heroku 上设置 Python 的指南:

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

    要将您的代码连接到您的 MongoLab 数据库,您只需将 URI 传递给您的 MongoClient 对象。如果您通过 Heroku 使用 MongoLab 插件,则 URI 会在环境变量中为您绑定:

    https://devcenter.heroku.com/articles/mongolab#getting-your-connection-uri

    你应该可以使用 os.getenv() 来获取它:

    http://docs.python.org/2/library/os.html#os.getenv

    另外,请确保使用正确的数据库名称(不要使用“test”)。您的数据库名称将出现在 URI 末尾的最后一个斜杠“/”之后。最后,你应该得到这样的结果:

    self.db = pymongo.MongoClient(os.getenv("MONGOLAB_URI")).heroku_appXXXXXXX
    

    【讨论】:

      【解决方案2】:

      请注意,此时从 Heroku 调用 Twitter API 可能会导致基于 Twitter IP 地址的速率限制问题。基本上,您的应用程序将与其他也可以向 Twitter 发送请求的 Heroku 应用程序共享 IP 地址,而 Twitter 可以将共享的 IP 地址列入黑名单。有关详细信息,请参阅这两个问题:

      Twitter Rate Limits for Site hosted on Heroku

      (twitter) Authentication failure! timeout: Net::OpenTimeout, execution expired

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        相关资源
        最近更新 更多