我对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('/')
来修复它,但后来脚本无效。我应该在声明中包含网站网址吗?
我真的很感激我能得到的任何帮助......
答案 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应用程序的信息。希望这会有所帮助。