如何让这个Python脚本在Heroku上运行?(浏览器显示‘404 Not Found’)
我刚接触Python和Heroku这两个东西... 我正在尝试用下面的Python脚本与xively.com进行通信。
这个脚本在本地运行得很好,当我执行'foreman start'时,它能正常工作。
但是,当我把应用程序部署到Heroku后,尝试打开Heroku提供的URL时,浏览器却显示:
404 找不到 页面未在服务器上找到。
在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('/')
,但这样脚本就不工作了。我是不是应该在这个语句中包含网站的URL呢?
我非常希望能得到任何帮助...
1 个回答
看起来你包含的脚本是在和Xively的API进行通信(获取数据和发送一些信息)。你是想让这个脚本在你访问heroku的网页应用时运行吗?这个脚本的目的是从Xively发送和接收数据,而使用“flask”的目的是为了构建一个网页应用并把它部署到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网页应用的路径“/”,但是这个路径没有找到。这是因为在你上面的代码中没有任何函数能在“/”这个路径上运行。试着把你的xively脚本放到“put your code here”这个地方。这样一来,当你访问这个路径时,就会触发你的代码运行,并且重新部署代码到heroku上。
另外,你可以去这里 http://flask.pocoo.org/ 查看关于基本的flask hello world应用的信息。希望这对你有帮助。