将线程作为参数传递给flask

时间:2016-12-08 08:05:07

标签: python flask python-multithreading

我正在使用flask创建一个网站,这是我的情况: 我有一个非常大的脚本,我需要在服务器上运行,所以如果我只是用subprocess.Popen调用脚本,服务器将超时。所以我想做的是创建一个线程,在线程中使用Popen调用脚本,并在线程完成后显示结果。我想检查线程是否已完成is_alive,但我不知道如何将其作为参数传递。到目前为止,这是我的代码:

(我正在简化示例,因此Popen只有time.sleep

 def funk():
      time.sleep(10)
      print ("Works")

  @app.route('/')
  def home():
      thread = Thread(target = funk)
      thread.start()
      return redirect('end',thread = thread)

  @app.route('/end')
  def end(thread):
      if thread.is_alive() == 0:
          return "Still working"
      else:
          return "Ended"

但是我收到了一个错误:

  

TypeError:redirect()得到了一个意外的关键字参数' thread'

有人知道如何将该线程作为参数传递吗?

我有一个早期版本,其中我有一个全局常量,我在线程中修改并在end询问它是否已更改,但这是有效的,但这是一个愚蠢的解决方案。

0 个答案:

没有答案