### Navigation
- [index](# "General Index")
- [modules](# "Python Module Index") |
- [next](# "tornado.log — Logging support") |
- [previous](# "Utilities") |
- [Tornado 4.4.dev1 documentation](#) »
- [Utilities](#) »
# `tornado.autoreload` — Automatically detect code changes in development
Automatically restart the server when a source file is modified.
Most applications should not access this module directly. Instead,pass the keyword argument `autoreload=True` to the[`tornado.web.Application`](# "tornado.web.Application") constructor (or `debug=True`, whichenables this setting and several others). This will enable autoreloadmode as well as checking for changes to templates and staticresources. Note that restarting is a destructive operation and anyrequests in progress will be aborted when the process restarts. (Ifyou want to disable autoreload while using other debug-mode features,pass both `debug=True` and `autoreload=False`).
This module can also be used as a command-line wrapper around scriptssuch as unit test runners. See the [`main`](# "tornado.autoreload.main") method for details.
The command-line wrapper and Application debug modes can be used together.This combination is encouraged as the wrapper catches syntax errors andother import-time failures, while debug mode catches changes oncethe server has started.
This module depends on [`IOLoop`](# "tornado.ioloop.IOLoop"), so it will not work in WSGI applicationsand Google App Engine. It also will not work correctly when [`HTTPServer`](# "tornado.httpserver.HTTPServer")‘smulti-process mode is used.
Reloading loses any Python interpreter command-line arguments (e.g. `-u`)because it re-executes Python using `sys.executable` and `sys.argv`.Additionally, modifying these variables will cause reloading to behaveincorrectly.
`tornado.autoreload.``start`(*io_loop=None*, *check_time=500*)[[source]](#)
Begins watching source files for changes.
Changed in version 4.1: The `io_loop` argument is deprecated.
`tornado.autoreload.``wait`()[[source]](#)
Wait for a watched file to change, then restart the process.
Intended to be used at the end of scripts like unit test runners,to run the tests again after any source file changes (but see alsothe command-line interface in [`main`](# "tornado.autoreload.main"))
`tornado.autoreload.``watch`(*filename*)[[source]](#)
Add a file to the watch list.
All imported modules are watched by default.
`tornado.autoreload.``add_reload_hook`(*fn*)[[source]](#)
Add a function to be called before reloading the process.
Note that for open file and socket handles it is generallypreferable to set the `FD_CLOEXEC` flag (using [`fcntl`](https://docs.python.org/3.4/library/fcntl.html#module-fcntl "(in Python v3.4)") [https://docs.python.org/3.4/library/fcntl.html#module-fcntl] or`tornado.platform.auto.set_close_exec`) insteadof using a reload hook to close them.
`tornado.autoreload.``main`()[[source]](#)
Command-line wrapper to re-run a script whenever its source changes.
Scripts may be specified by filename or module name:
~~~
python -m tornado.autoreload -m tornado.test.runtests
python -m tornado.autoreload tornado/test/runtests.py
~~~
Running a script with this wrapper is similar to calling[`tornado.autoreload.wait`](# "tornado.autoreload.wait") at the end of the script, but this wrappercan catch import-time problems like syntax errors that would otherwiseprevent the script from reaching its call to [`wait`](# "tornado.autoreload.wait").
© Copyright 2009-2016, The Tornado Authors. Created using [Sphinx](http://sphinx-doc.org/) 1.3.5.
- User's guide
- Introduction
- Asynchronous and non-Blocking I/O
- Coroutines
- Queue example - a concurrent web spider
- Structure of a Tornado web application
- Templates and UI
- Authentication and security
- Running and deploying
- Web framework
- tornado.web — RequestHandler and Application classes
- tornado.template — Flexible output generation
- tornado.escape — Escaping and string manipulation
- tornado.locale — Internationalization support
- tornado.websocket — Bidirectional communication to the browser
- HTTP servers and clients
- tornado.httpserver — Non-blocking HTTP server
- tornado.httpclient — Asynchronous HTTP client
- tornado.httputil — Manipulate HTTP headers and URLs
- tornado.http1connection – HTTP/1.x client/server implementation
- Asynchronous networking
- tornado.ioloop — Main event loop
- tornado.iostream — Convenient wrappers for non-blocking sockets
- tornado.netutil — Miscellaneous network utilities
- tornado.tcpclient — IOStream connection factory
- tornado.tcpserver — Basic IOStream-based TCP server
- Coroutines and concurrency
- tornado.gen — Simplify asynchronous code
- tornado.concurrent — Work with threads and futures
- tornado.locks – Synchronization primitives
- tornado.queues – Queues for coroutines
- tornado.process — Utilities for multiple processes
- Integration with other services
- tornado.auth — Third-party login with OpenID and OAuth
- tornado.wsgi — Interoperability with other Python frameworks and servers
- tornado.platform.asyncio — Bridge between asyncio and Tornado
- tornado.platform.caresresolver — Asynchronous DNS Resolver using C-Ares
- tornado.platform.twisted — Bridges between Twisted and Tornado
- Utilities
- tornado.autoreload — Automatically detect code changes in development
- tornado.log — Logging support
- tornado.options — Command-line parsing
- tornado.stack_context — Exception handling across asynchronous callbacks
- tornado.testing — Unit testing support for asynchronous code
- tornado.util — General-purpose utilities
- Frequently Asked Questions
- Release notes
- What's new in Tornado 4.3
- What's new in Tornado 4.2.1
- What's new in Tornado 4.2
- What's new in Tornado 4.1
- What's new in Tornado 4.0.2
- What's new in Tornado 4.0.1
- What's new in Tornado 4.0
- What's new in Tornado 3.2.2
- What's new in Tornado 3.2.1
- What's new in Tornado 3.2
- What's new in Tornado 3.1.1
- What's new in Tornado 3.1
- What's new in Tornado 3.0.2
- What's new in Tornado 3.0.1
- What's new in Tornado 3.0
- What's new in Tornado 2.4.1
- What's new in Tornado 2.4
- What's new in Tornado 2.3
- What's new in Tornado 2.2.1
- What's new in Tornado 2.2
- What's new in Tornado 2.1.1
- What's new in Tornado 2.1
- What's new in Tornado 2.0
- What's new in Tornado 1.2.1
- What's new in Tornado 1.2
- What's new in Tornado 1.1.1
- What's new in Tornado 1.1
- What's new in Tornado 1.0.1
- What's new in Tornado 1.0