到目前为止,我真的很喜欢Bottle ,但是每次更改代码时我都必须 CTRL+C 退出服务器并重新启动它,这对我的工作效率造成了很大影响。我曾考虑使用看门狗bottle.run
来跟踪文件更改然后重新启动服务器,但是当功能阻塞时我该怎么做。
从监视文件更改的外部脚本运行服务器似乎需要做很多工作。我认为这对于 Bottle、CherryPy 和其他开发人员来说是一个普遍的问题。
感谢您对问题的解决方案!
到目前为止,我真的很喜欢Bottle ,但是每次更改代码时我都必须 CTRL+C 退出服务器并重新启动它,这对我的工作效率造成了很大影响。我曾考虑使用看门狗bottle.run
来跟踪文件更改然后重新启动服务器,但是当功能阻塞时我该怎么做。
从监视文件更改的外部脚本运行服务器似乎需要做很多工作。我认为这对于 Bottle、CherryPy 和其他开发人员来说是一个普遍的问题。
感谢您对问题的解决方案!
从教程中查看题为“自动重新加载”的部分
在开发过程中,您必须多次重新启动服务器以测试您最近的更改。自动重新加载器可以为您执行此操作。每次编辑模块文件时,重新加载器都会重新启动服务器进程并加载最新版本的代码。
这给出了以下示例:
from bottle import run
run(reloader=True)
和
run(reloader=True)
在某些情况下,它不会像导入在 def 中那样重新加载。强制重新加载我使用
subprocess.call(['touch', 'mainpgm.py'])
它在linux中重新加载很好。
reloader=True
中使用run()
。if __name__ == "__main__":
请记住,在 Windows 中,由于multiprocessing
模块的工作方式,这必须低于。
from bottle import run
if __name__ == "__main__":
run(reloader=True)
这些脚本应该可以满足您的需求。
自动加载文件
import os
def cherche(dir):
FichList = [ f for f in os.listdir(dir) if os.path.isfile(os.path.join(dir,f)) ]
return FichList
def read_file(file):
f = open(file,"r")
R=f.read()
f.close()
return R
def load_html(dir="pages"):
FL = cherche(dir)
R={}
for f in FL:
if f.split('.')[1]=="html":
BUFF = read_file(dir+"/"+f)
R[f.split('.')[0]] = BUFF
return R
主文件
# -*- coding: utf-8 -*-
#Version 1.0 00:37
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import datetime
import ast
from bottle import route, run, template, get, post, request, response, static_file, redirect
#AUTOLOAD by LAGVIDILO
import autoload
pages = autoload.load_html()
BUFF = ""
for key,i in pages.iteritems():
BUFF=BUFF+"@get('/"+key+"')\n"
BUFF=BUFF+"def "+key+"():\n"
BUFF=BUFF+" return "+pages[key]+"\n"
print "=====\n",BUFF,"\n====="
exec(BUFF)
run(host='localhost', port=8000, reloader=True)