如何让这个Python脚本在Heroku上运行?(浏览器显示‘404 Not Found’)

1 投票
1 回答
778 浏览
提问于 2025-04-18 00:51

我刚接触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 个回答

0

看起来你包含的脚本是在和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应用的信息。希望这对你有帮助。

撰写回答