我试图用python编写一个Heroku应用程序,它将实时读取和存储xively feed中的数据。我希望该应用程序作为一种“后端过程”独立运行,以将数据简单地存储在数据库中。 (它不需要为用户(为站点访问者)“提供”任何东西。)

现在,我正在“连续阅读”部分。我在下面包含了我的代码。每当我点击应用程序的Heroku URL时,它只会读取一次数据流。我如何使它连续运行,以便不断从xive读取数据?

import os
from flask import Flask
import xively

app = Flask(__name__)

@app.route('/')
def run_xively_script():

   key = 'FEED_KEY'
   feedid = 'FEED_ID'


   client = xively.XivelyAPIClient(key)
   feed = client.feeds.get(feedid)
   datastream = feed.datastreams.get("level")

   level = datastream.current_value


   return "level is %s" %(level)


我是Web开发,heroku和python的新手。我真的很感谢您的帮助(指针)

{
PS:
我已经阅读了有关Heroku Scheduler的信息,据我了解,它可以用于在特定时间间隔安排任务,当这样做时,它将为任务启动一次性测功机。但是正如我提到的,我的应用程序实际上只打算执行一项功能->从xive连续读取和存储数据。是否有必要为此安排单独的任务?调度程序将启动的一次性dyno也将消耗dyno小时,我认为这将超过750 dyno-hours的免费限制(因为我的应用程序的Web dyno已经每月消耗720 dyno-hours)...
}

最佳答案

正如您和@Calumb所建议的那样,使用调度程序是解决此问题的一种方法。

另一种方法是让您在Xively上设置触发器。 https://xively.com/dev/docs/api/metadata/triggers/

更新Feed时触发触发器。触发器应发布到您的Flask应用程序,然后Flask应用程序可以获取新数据,对其进行操作并根据需要进行存储。我想,这将是最接近实时的情况,因为Xively正在将更新推送到您的系统。

关于python - 如何在(python)heroku应用程序中从xive连续读取数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23105491/

10-14 17:18
查看更多