我有一个Flask脚本,可以创建网站并动态打印一些数据。-打印的数据应来自另一个python脚本。
Flask
我目前面临的问题是,如果我将执行python脚本的行放在执行Flask应用程序的行之前,它将运行Python脚本而不运行Flask;反之亦然。
Python脚本:
import websocket from bitmex_websocket import Instrument from bitmex_websocket.constants import InstrumentChannels from bitmex_websocket.constants import Channels import json websocket.enableTrace(True) sells = 0 buys = 0 channels = [ InstrumentChannels.trade, ] XBTUSD = Instrument(symbol='XBTUSD', channels=channels) XBTUSD.on('action', lambda msg: test(msg)) def test(msg): parsed = json.loads(json.dumps(msg)) print(parsed) XBTUSD.run_forever()
Flask脚本(注意:价格应为其他脚本的“解析”变量):
# Start with a basic flask app webpage. from flask_socketio import SocketIO, emit from flask import Flask, render_template, url_for, copy_current_request_context from random import random from time import sleep from threading import Thread, Event import requests, json import time __author__ = 'slynn' app = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' app.config['DEBUG'] = True #turn the flask app into a socketio app socketio = SocketIO(app) #random number Generator Thread thread = Thread() thread_stop_event = Event() class RandomThread(Thread): def __init__(self): self.delay = 1 super(RandomThread, self).__init__() def randomNumberGenerator(self): while not thread_stop_event.isSet(): socketio.emit('newnumber', {'number': parsed}, namespace='/test') sleep(self.delay) def run(self): self.randomNumberGenerator() @app.route('/') def index(): #only by sending this page first will the client be connected to the socketio instance return render_template('index.html') @socketio.on('connect', namespace='/test') def test_connect(): # need visibility of the global thread object global thread print('Client connected') #Start the random number generator thread only if the thread has not been started before. if not thread.isAlive(): print("Starting Thread") thread = RandomThread() thread.start() @socketio.on('disconnect', namespace='/test') def test_disconnect(): print('Client disconnected') if __name__ == '__main__': socketio.run(app)
使用import:
import
website_generator.py
app.py
flask.py
from website_generator import function_nam
function_name()
你可以使用其他功能,例如subprocess.callet等。尽管他们可能不会给你答复。
subprocess.callet
使用示例import:
from flask import Flask import your_module # this will be your file name; minus the `.py` app = Flask(__name__) @app.route('/') def dynamic_page(): return your_module.your_function_in_the_module() if __name__ == '__main__': app.run(host='0.0.0.0', port='8000', debug=True)