如何让这个python脚本在heroku上运行? (浏览器抛出'404 Not Found')

时间:2014-04-01 13:58:44

标签: python heroku flask xively

我对Python和Heroku都是全新的...我正在尝试使用下面包含的python脚本与xively.com进行通信。

这个脚本似乎在本地工作正常 - 当我执行'foreman start'时它会执行它的预期功能。

但是当我部署应用程序并尝试打开Heroku提供的URL时,浏览器会抛出:

  

404 Not Found在服务器上找不到请求的URL。

Heroku日志中的相应条目是:

  

heroku [router]:at = info method = GET path = / host = ......   request_id = ...... fwd =“.....”dyno = web.1 connect = 1ms service = 13ms   status = 404 bytes = 384

#script to GET and PUT data to xively.com
import os
from flask import Flask
import xively

app = Flask(__name__)

key = 'FEED_KEY'  
feedid = 'FEED_ID'  

print "Starting Xively tutorial script"

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

lev = datastream.current_value

client1 = xively.Client(key)  
datastream = xively.Datastream(id="datastream2", current_value= lev)  
client1.put('/v2/feeds/'+feedid, data={'datastreams': [datastream]}) 

我认为这可能与缺少声明有关,例如: @app.route('/') ...在脚本中。我试图通过在脚本中包含@app.route('/')来修复它,但后来脚本无效。我应该在声明中包含网站网址吗?

我真的很感激我能得到的任何帮助......

1 个答案:

答案 0 :(得分:0)

看起来您所包含的脚本正在与Xively API进行通信(获取Feed并发送一些数据)。您希望在转到heroku Web应用程序后运行此脚本吗?您的脚本的目的是从Xively发送和接收数据,但使用“flask”的目的是构建Web应用程序并将其部署在heroku上。一旦你点击了你的heroku URL,我猜你想要运行你的脚本。如果是这种情况,那么你必须将整个脚本放在一个路由到路径“/".

的函数下。
@app.route('/')
def run_xively_script():
    put your code here.

heroku [router]:at = info method = GET path = / host = ...... request_id = ...... fwd =“.....”dyno = web.1 connect = 1ms service = 13ms status = 404 bytes = 384

如果您解构此消息,则表示有人(我认为您)尝试在路径“/”处访问heroku Web应用程序,并且找不到该路径。这是因为您没有在上面的代码中的“/”路径上运行的函数。尝试将您的xively脚本放在上面的“把你的代码放在这里”。一旦你触及该路径并在heroku上重新部署代码,这应该触发运行你的代码。

另请访问http://flask.pocoo.org/以获取有关基本烧瓶hello world应用程序的信息。希望这会有所帮助。