Я хочу запустить скрипт фляги с функцией кнопки щелчка, которая при нажатии должна запустить сценарий тире и открыть вывод тире на 127.1.1.1:8050, я пытаюсь сделать это на моей локальной машине.
Я попытался использовать subprocess.call, но это привело к Winerror 10038 An operation was attempted on something that is not a socket
, а затем я попытался обернуть скрипт в функцию и вызвать его в колбе, но он не работает, так как приводит к 127.1.1.1:8050, но показывает битая страница с сообщением 'This site can't be reached'
Скрипты Dask и Flask
### Dash Script ##
import dash
import dash_core_components as dcc
import dash_html_components as html
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True,host="127.1.1.1")
### Flask Script with subprocess.call ###
from flask import Flask, request, render_template, json
import random, threading, webbrowser
import subprocess
app=Flask(__name__)
viz_url="http://127.1.1.1:{0}".format(8050)
@app.route('/',methods=["GET","POST"])
def viz():
return '''
<html>
<body>
<p>Click for output:</p>
<form method="post" action=".">
<p><input type="submit" value="Output" /></p>
</form>
</body>
</html>
''',threading.Timer(.75, lambda: webbrowser.open(viz_url) ).start(),subprocess.call(["python","dash_script.py"], shell=True)
if __name__ == '__main__':
app.run( debug = True)
### Flask script with wrapping dash in a function ###
from flask import Flask, request, render_template, json
import random, threading, webbrowser
from dash_script import dash_viz
import subprocess
app=Flask(__name__)
viz_url="http://127.1.1.1:{0}".format(8050)
@app.route('/',methods=["GET","POST"])
def viz():
return '''
<html>
<body>
<p>CLick for output:</p>
<form method="post" action=".">
<p><input type="submit" value="Output" /></p>
</form>
</body>
</html>
''',threading.Timer(.75, lambda: webbrowser.open(viz_url) ).start(),dash_viz()