当前位置:首页 > 行业动态 > 正文

Flask自动重载

Flask自动重载是指在开发过程中,当代码发生更改时,不需要手动重启服务器,而是可以自动重新加载修改后的代码,这样可以大大提高开发效率,在Flask中,可以使用第三方库watchdog实现自动重载功能。

Flask自动重载  第1张

安装watchdog库:

pip install watchdog

以下是一个使用watchdog实现的Flask自动重载的示例:

1、创建一个名为app.py的文件,内容如下:

from flask import Flask
import os
import sys
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
app = Flask(__name__)
@app.route('/')
def hello():
    return 'Hello, World!'
if __name__ == '__main__':
    app.run()

2、创建一个名为autoreload_example.py的文件,内容如下:

import sys
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from app import app, hello
class AutoReloadHandler(FileSystemEventHandler):
    def on_modified(self, event):
        if not event.is_directory and event.src_path.endswith('.py'):
            print(f'Detected change in {event.src_path}. Reloading...')
            sys.exit(3)
        elif not event.is_directory and event.src_path == 'app.py':
            print(f'Detected change in {event.src_path}. Reloading...')
            sys.exit(3)
        else:
            print(f'Detected change in {event.src_path} but not a Python file or app.py. Ignoring...')
            return None
if __name__ == '__main__':
    event_handler = AutoReloadHandler()
    observer = Observer()
    observer.schedule(event_handler, path='.', recursive=False)
    observer.start()
    print('Watching for changes...')
    app.run()

3、运行autoreload_example.py文件:

python autoreload_example.py

现在,当你修改app.py或hello函数中的代码时,不需要手动重启服务器,它会自动重新加载修改后的代码。

0