Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用flask和javascript的动态EventSource_Javascript_Python_Flask_Jinja2 - Fatal编程技术网

使用flask和javascript的动态EventSource

使用flask和javascript的动态EventSource,javascript,python,flask,jinja2,Javascript,Python,Flask,Jinja2,我目前正在使用flask构建一个工具,该工具使用ssh执行各种操作。其中一个操作是使用DD从X复制到Y 我目前在我的页面上设置了以下javascript <script> var source == new EventSource("/dd"); source.onmessage = function(event){ $('.determinate'.css('width', event.data+'%') if(eve

我目前正在使用flask构建一个工具,该工具使用ssh执行各种操作。其中一个操作是使用DD从X复制到Y

我目前在我的页面上设置了以下javascript

    <script>
      var source == new EventSource("/dd");
      source.onmessage = function(event){
        $('.determinate'.css('width', event.data+'%')
        if(event.data == 100){
          source.close()
          }
        }
上面是伪代码,但我希望能够更改的是DD命令(DD if=/dev/sda of=/test/img),该命令来自触发此页面的表单中的变量,以及ssh.connect函数和request.remote\u addr中的主机名

当我尝试用request.remote\u addr替换“127.0.0.1”时,我得到一个上下文错误

是否还有其他方法可以将flask/jinja2变量(如{image.path}})传递给我的生成器视图?。我想要的伪代码是这样的,其中主机名和dd是动态的(更改在花括号中)


只是想出来了,没有读文件的最后一段

如果您想在生成器中保留上一个请求的上下文,只需更改

return Response(generate(), mimetype='text/event-stream')

对于传递数据,我只是使用“session”对象来传递数据,然后在我使用完后将其删除

@app.route('/dd')
def progress():
  def generate():
    ssh.SSHClient({{ request.remote_addr }}, username, password)
    chan =  ssh.get_transport().open_session()
    chan.settimeout(10800)
    try:
      ssh.do('dd if={{ device }} of={{ image.path }}')
      while data:
        data = chan.recv_stderr(1024)
          try:
            yield "data: " + str(data) + "\n\n\"

  return Response(generate(), mimetype='text/event-stream')
return Response(generate(), mimetype='text/event-stream')
 return Response(stream_with_context(generatE()), mimetype='text/event-stream')