Я пытаюсь понять, как запустить веб-сервис на героку, используя флягу и JSONRPC. Я хотел бы добраться до точки, где с моего рабочего стола я могу делать:
from flask_jsonrpc.proxy import ServiceProxy
service = ServiceProxy('http://<myapp>.heroku.com/api')
result = service.App.index()
print result
глядя на журналы heroku, я вижу:
2014-07-05T13:18:42.910030+00:00 app[web.1]: 2014-07-05 13:18:42 [2] [INFO] Listening at: http://0.0.0.0:21040 (2)
и попробуйте использовать этот порт с помощью:
service = ServiceProxy('http://<myapp>.heroku.com:21020/api')
все еще не работает (кажется зависшим)
Но когда я запускаю это через мастера, я могу получить к нему доступ, и, похоже, он работает нормально.
но когда я пытаюсь использовать развернутое приложение, я получаю:
ValueError: No JSON object could be decoded
Это приложение (я мало что знаю, но просто посмотреть, как работает героку)
import os
from flask import Flask
from flask_jsonrpc import JSONRPC
app = Flask(__name__)
jsonrpc = JSONRPC(app, '/api', enable_web_browsable_api=True)
@jsonrpc.method('App.index')
def index():
return u'Welcome to Flask JSON-RPC'
if __name__ == '__main__':
port = int(os.environ.get("PORT", 5000))
app.run(host='0.0.0.0', debug=True, port=port)
это содержимое моего Procfile:
web: gunicorn run:app -p $PORT
Я пропустил что-то очевидное здесь? Ваше здоровье.
L.
p.S
доступ к http://.heroku.com/api/browse из мастера и развернутого приложения, кажется, работает нормально.
[редактировать]
решено:
да, я что-то упустил .... посмотрев журнал лучше, я заметил хост, который был:
host=<myapp>.herokuapp.com
вместо .heroku.com
Поменяв адрес на правильный, вроде все работает нормально. http://.herokuapp.com/api