Mia's repo to get Flask working on Heroku. A user supplies a stock ticker symbol, and a plot displays the closing prices from the past 30 days. This Flask Demo provided the framework for the stock ticker app.
This project is intended to help you tie together some important concepts and technologies from the 12-day course, including Git, Flask, JSON, Pandas, Requests, Heroku, and Bokeh for visualization.
The repository contains a basic template for a Flask configuration that will work on Heroku.
A finished example that demonstrates some basic functionality.
-
Git clone the existing template repository.
-
Procfile,requirements.txt,conda-requirements.txt, andruntime.txtcontain some default settings. -
There is some boilerplate HTML in
templates/ -
Create Heroku application with
heroku create <app_name>or leave blank to auto-generate a name. -
(Suggested) Use the conda buildpack. If you choose not to, put all requirements into
requirements.txtheroku config:add BUILDPACK_URL=https://github.com/kennethreitz/conda-buildpack.gitThe advantages of conda include easier virtual environment management and fast package installation from binaries (as compared to the compilation that pip-installed packages sometimes require). One disadvantage is that binaries take up a lot of memory, and the slug pushed to Heroku is limited to 300 MB. Another note is that the conda buildpack is being deprecated in favor of a Docker solution.
-
Deploy to Heroku:
git push heroku master -
You should be able to see your site at
https://<app_name>.herokuapp.com -
A useful reference is the Heroku quickstart guide.
- Use the
requestslibrary to grab some data from a public API. This will often be in JSON format, in which casesimplejsonwill be useful. - Build in some interactivity by having the user submit a form which determines which data is requested.
- Create a
pandasdataframe with the data.
- Create a Bokeh plot from the dataframe.
- Consult the Bokeh documentation and examples.
- Make the plot visible on your website through embedded HTML or other methods - this is where Flask comes in to manage the interactivity and display the desired content.
- Some good references for Flask: This article, especially the links in "Starting off", and this tutorial.