mirror of https://github.com/mitsuhiko/flask.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
.. _server: |
|
|
|
Development Server |
|
================== |
|
|
|
.. currentmodule:: flask |
|
|
|
Starting with Flask 0.11 there are multiple built-in ways to run a |
|
development server. The best one is the :command:`flask` command line utility |
|
but you can also continue using the :meth:`Flask.run` method. |
|
|
|
Command Line |
|
------------ |
|
|
|
The :command:`flask` command line script (:ref:`cli`) is strongly |
|
recommended for development because it provides a superior reload |
|
experience due to how it loads the application. The basic usage is like |
|
this:: |
|
|
|
$ export FLASK_APP=my_application |
|
$ export FLASK_ENV=development |
|
$ flask run |
|
|
|
This will enable the debugger, the reloader and then start the server on |
|
*http://localhost:5000/*. |
|
|
|
The individual features of the server can be controlled by passing more |
|
arguments to the ``run`` option. For instance the reloader can be |
|
disabled:: |
|
|
|
$ flask run --no-reload |
|
|
|
.. note:: |
|
|
|
On older Flask version (before 1.0) the :envvar:`FLASK_ENV` |
|
environment variable is not supported and you need to enable the |
|
debug mode separately by setting the :envvar:`FLASK_DEBUG` environment |
|
variable to ``1``. |
|
|
|
In Code |
|
------- |
|
|
|
The alternative way to start the application is through the |
|
:meth:`Flask.run` method. This will immediately launch a local server |
|
exactly the same way the :command:`flask` script does. |
|
|
|
Example:: |
|
|
|
if __name__ == '__main__': |
|
app.run() |
|
|
|
This works well for the common case but it does not work well for |
|
development which is why from Flask 0.11 onwards the :command:`flask` |
|
method is recommended. The reason for this is that due to how the reload |
|
mechanism works there are some bizarre side-effects (like executing |
|
certain code twice, sometimes crashing without message or dying when a |
|
syntax or import error happens). |
|
|
|
It is however still a perfectly valid method for invoking a non automatic |
|
reloading application.
|
|
|