Vielen Dank. Am Tag zuvor Verliere nicht gegen Ruby! Das Ausführen von Python (Django) mit Heroku hat mich zur Registrierung inspiriert. Dies ist kounoike.
Der Artikel Zeichnen von SVG-Diagrammen mit Matplotlib mit Heroku erwähnt auch die Einführung von Flask + Heroku, aber dieses Mal machen wir es zu einem Artikel ohne Matplotlib. .. Versuchen Sie stattdessen, MongoHQ für einen Moment zu verwenden.
Wenn Django ein "Full Stack" -Webframework ist, ist Flask ein "Mikro" -Webframework. Der Standard-Flask-Kern basiert nur auf zwei Bibliotheken, der Jinja2-Template-Engine und dem Werkzeug WSGI-Toolkit. Die Hauptfunktionen sind Routing, Jinja2-Vorlagen, Bereitstellung statischer Dateien und Unterstützung beim Debuggen (weil ich nicht alles weiß ...). Natürlich stehen verschiedene Flask-Erweiterungsbibliotheken zur Verfügung, sodass Sie in der Lage sein sollten, ausführlichere Aufgaben zu erledigen.
Es ist ein sehr einfaches Framework, mit dem Sie eine .py-Datei in einer Datei starten können. Dies ist nützlich, wenn Sie eine einfache Web-App erstellen und veröffentlichen möchten.
Wie Sie dem gestrigen Artikel entnehmen können, scheint Django viel Zeit für die Bereitstellung statischer Dateien zu benötigen, aber Flask setzt sie einfach unter statisch, sodass die Bereitstellung von js / css / img einfach ist.
Es wird davon ausgegangen, dass Sie ein Heroku-Konto erstellt und Toolbelt installiert haben. Außerdem wird davon ausgegangen, dass pyenv und pyenv-virtualenv bereits in der Umgebung auf dem Mac installiert wurden.
Herokus Python ist 2.7.8 oder 3.4.1, aber hier habe ich 2.7.8 gewählt.
$ mkdir heroku-qiita-advent-2014
$ cd heroku-qiita-advent-2014
$ pyenv virtualenv 2.7.8 qiita-advent-2014
$ pyenv local qiita-advent-2014
$ echo .python-version > .gitignore
$ pip install flask
app.py
#!/bin/env python
# coding: utf-8
import os
from flask import Flask, render_template
app = Flask(__name__)
app.debug = True
@app.route('/')
def index():
return u'Prüfung'
@app.route('/hello/<name>')
def hello(name=''):
if name == '':
¦ name = u'Nanashi'
return render_template('hello.html', name=name)
@app.route('/debug')
def debug():
return render_template('notemplate.html')
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
app.run(port=port)
Platzieren Sie die Vorlagendatei unter Vorlagen /. Platzieren Sie außerdem statische Dateien unter static /.
templates/hello.html
<html>
<head>
<title>Hello {{ name }}</title>
</head>
<body>
<h1>Hallo{{ name }}Herr.</h1>
<a href="http://flask.pocoo.org/"><img src="/static/img/flask.png "></a>
</body>
</html>
$ tree
.
├── Procfile
├── app.py
├── requirements.txt
├── runtime.txt
├── static
│ └── img
│ └── flask.png
└── templates
└── hello.html
python app.py
startet die App auf dem lokalen Host-Port 5000. Es gibt / und / hallo / name und / debug, also lass es uns versuchen.
Da "app.debug = True" eingegeben wird, wird beim Zugriff auf http: // localhost: 5000 / debug eine Fehlerseite angezeigt.
$ pip install gunicorn
$ pip freeze > requirements.txt
$ echo python-2.7.8 > runtime.txt
$ echo web: gunicorn app:app --log-file=- > Procfile
$ git init
$ git add .gitignore
$ git add .
$ git commit -m "initial commit"
$ heroku login
$ heroku apps:create
$ git push heroku master
Sie können diese App unter https://stark-forest-4893.herokuapp.com/ sehen. Bitte geben Sie nach https://stark-forest-4893.herokuapp.com/hello/ einen geeigneten Namen ein.
Außerdem ist Flask 'app.debug = True' auf Heroku deaktiviert.
Überprüfen Sie mit dem Befehl heroku logs
.
Verwendung von PostgreSQL ist ein englischer Artikel, aber Flask und PostgreSQL auf Heroku Vielleicht möchten Sie sich darauf beziehen (ich habe es nie benutzt ...).
Der Grund, warum ich es nicht benutzt habe, ist, dass die kostenlose Stufe auf 10.000 Zeilen begrenzt ist und ich MongoHQ benutze. Mongo HQ ist bis zu 512 MB kostenlos. Wenn Sie viele kleine Daten haben, ist dies einfacher zu verwenden.
Lassen Sie uns verschiedene Dinge vorbereiten.
$ heroku addons:add mongohq
$ pip install pymongo
$ pip freeze > requirements.txt
Apps und Vorlagen ändern
app.py
#!/bin/env python
# coding: utf-8
import os
from urlparse import urlparse
from flask import Flask, render_template
from pymongo import Connection
app = Flask(__name__)
app.debug = True
MONGO_URL = os.environ.get('MONGOHQ_URL')
if MONGO_URL:
# Get a connection
connection = Connection(MONGO_URL)
# Get the database
db = connection[urlparse(MONGO_URL).path[1:]]
else:
# Not on an app with the MongoHQ add-on, do some localhost action
connection = Connection('localhost', 27017)
db = connection['QiitaAdvent2014']
@app.route('/')
def index():
return u'Prüfung'
@app.route('/hello/<name>')
def hello(name=''):
if name == '':
name = u'Nanashi'
return render_template('hello.html', name=name)
@app.route('/hello2/<name>')
def hello2(name=''):
if name == '':
name = u'Nanashi'
helloObj = db.hello.find_one({'name': name})
if not helloObj:
helloObj = {'name': name, 'count': 1}
else:
helloObj['count'] += 1
db.hello.save(helloObj)
return render_template('hello2.html', hello=helloObj)
@app.route('/debug')
def debug():
return render_template('notemplate.html')
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
app.run(port=port)
hello2.html
<html>
<head>
<title>Hello {{ hello.name }}</title>
</head>
<body>
<h1>Hallo{{ hello.name }}Herr.</h1>
<h2>{{ hello.count }}Es ist das zweite Mal!</h2>
</body>
</html>
https://stark-forest-4893.herokuapp.com/hello2/
Es scheint, dass es mit fließend, Postgres, TreasureData von kiyoto verwandt ist! fließend war in diesen Tagen ein heißes Thema. Ich bin auch interessiert. Ich freue mich darauf zu sehen, wie sich diese mit Heroku verbinden.
Recommended Posts