我试图用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/