我如何在一个脚本中启动Web服务器并更新功能

时间:2019-06-26 11:16:11

标签: python bottle

我启动服务器并使用我的函数中的一些数据。但是我希望此功能更新数据并在服务器上显示新数据。但是,当我启动Web服务器时,它仅从函数中获取第一个编译的数据。

我使用“时间表”-导入的库,可以安排我的任务以按我选择的时间编译我的函数。还可以使用瓶子Web框架启动服务器并进行路由。

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服务器上获得最新结果。如果您能帮助我或提供一些好的建议,将非常高兴。谢谢大家。

1 个答案:

答案 0 :(得分:0)

首先,我将使用异步进程(特别是gevent)运行bottle。

this.props

然后,我将在单独的文件scheduler.py中启动您的调度程序:

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()