Как я могу запустить веб-сервер и обновить свою функцию в один скрипт - PullRequest
0 голосов
/ 26 июня 2019

Я запускаю сервер и использую некоторые данные из своей функции. Но я хочу, чтобы эта функция обновляла данные и отображала новые на моем сервере. Однако, когда я запускаю веб-сервер, он берет только первые скомпилированные данные из функции.

Я использую «расписание» - импортированную библиотеку, которая может планировать мою задачу для компиляции моей функции в выбранное мной время. Также создайте веб-фреймворк для запуска сервера и маршрутизации.

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)

Я ожидаю получить обновленные результаты на моем веб-сервере. Буду очень рад, если вы мне поможете или дадите несколько полезных советов. Спасибо вам всем.

1 Ответ

0 голосов
/ 26 июня 2019

Сначала я запустил бутылку с асинхронным процессом, в частности, с 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)
...