Python 如何在一个脚本中启动web服务器并更新功能
我启动一台服务器,并使用我的函数中的一些数据。但是我希望这个函数更新数据并在我的服务器上显示新的数据。然而,当我启动web服务器时,它只从函数中获取第一个编译的数据 我使用“schedule”-导入的库,它可以在我选择的时间安排我的任务来编译我的函数。还可以使用web框架启动服务器并进行路由Python 如何在一个脚本中启动web服务器并更新功能,python,bottle,Python,Bottle,我启动一台服务器,并使用我的函数中的一些数据。但是我希望这个函数更新数据并在我的服务器上显示新的数据。然而,当我启动web服务器时,它只从函数中获取第一个编译的数据 我使用“schedule”-导入的库,它可以在我选择的时间安排我的任务来编译我的函数。还可以使用web框架启动服务器并进行路由 def read_file(): f=open("345.txt", "r") hi.contents = f.read() print(hi.contents) def serv
def read_file():
f=open("345.txt", "r")
hi.contents = f.read()
print(hi.contents)
def server_start():
@route('/as', method = 'GET')
def display_status():
try:
return hi.contents
except Exception:
logging.exception("")
return "Service unavailable. Check logs"
run(host='0.0.0.0', port=8033)
print("sadq")
schedule.every(3).seconds.do(read_file)
server_start()
while True:
schedule.run_pending()
time.sleep(1)
我希望在我的web服务器上获得更新的结果。如果你能帮助我或给我一些好的建议,我将非常高兴。谢谢大家。首先,我将使用异步进程运行瓶子,特别是gevent
import gevent
from gevent import monkey, signal
monkey.patch_all()
from bottle import app
import scheduler
app = Bottle()
@route('/as', method = 'GET')
def display_status():
try:
return scheduler.contents
except Exception:
logging.exception("")
return "Service unavailable. Check logs"
print("sadq")
server = WSGIServer(("0.0.0.0", int(8083)), app)
def shutdown():
print('Shutting down ...')
server.stop(timeout=60)
exit(signal.SIGTERM)
gevent.signal(signal.SIGTERM, shutdown)
gevent.signal(signal.SIGINT, shutdown) #CTRL C
server.serve_forever()
然后,我将在单独的文件scheduler.py中启动您的计划程序:
from gevent import spawn, sleep
import schedule
contents = ''
def read_file():
global contents
f=open("345.txt", "r")
contents = f.read()
print(contents)
def start_thread():
while 1:
schedule.run_pending()
sleep(1)
schedule.every(3).seconds.do(read_file)
spawn(start_thread)
哦,非常感谢。它很好用。我将阅读更多关于“gevent”和异步编程的内容。无论如何,感谢您的帮助。从技术上讲,日程模块内置了与gevent的兼容性,因此您不需要在它自己的greenlet中生成它。我只是举个例子。我喜欢gevent库。我什么都用它。