Как запустить штрих-скрипт с помощью кнопки на странице, созданной с помощью колбы - PullRequest
0 голосов
/ 10 июля 2019

Я хочу запустить скрипт фляги с функцией кнопки щелчка, которая при нажатии должна запустить сценарий тире и открыть вывод тире на 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()












...