1

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

该脚本似乎在本地运行良好 - 当我执行“工头启动”时,它会执行其预期功能。

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

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

Heroku 日志中对应的条目是:

heroku[路由器]: at=info method=GET path=/ host=...... request_id=...... fwd="....." dyno=web.1 connect=1ms service=13ms状态=404 字节=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 吗?

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

4

1 回答 1

0

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

@app.route('/')
def run_xively_script():
    put your code here.

heroku[路由器]: at=info method=GET path=/ host=...... request_id=...... fwd="....." dyno=web.1 connect=1ms service=13ms状态=404 字节=384

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

也可以去这里http://flask.pocoo.org/了解基本的烧瓶 hello world 应用程序的信息。希望这可以帮助。

于 2014-04-01T14:12:31.847 回答