gpt4 book ai didi

python - 子进程不等待并使 PhantomJS 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:54 27 4
gpt4 key购买 nike

我有两个脚本在运行,一个在端口 :80 上,一个在端口 :81 上。因为我们的一些用户在端口 :81 的服务器上遇到问题,我正在尝试实现这样的解决方法;

旧的方法,对大多数用户来说效果很好:

  • AngularJS 应用向 example.com:81/getpdf/1 发出请求
  • Flask 服务器使用 PhantomJS 和 ImageMagick 使用两个单独的 subprocess.Popen 调用和 .wait() 方法生成 PNG 和 PDF 文件
  • 使用 Flask 的 send_file(),将 PDF 发送回用户并开始下载

我针对此问题的解决方法:

  • AngularJS 向 example.com/getpdf/1 发出请求
  • Flask 服务器 (:80) 发出新的 GET 请求,r = requests.get(url_with_port_81),伪造旧的 AngularJS 请求以创建 PNG/PDF
  • 我现在不使用 send_file(),而是返回生成的 PDF 的路径
  • 我返回send_file(r.text)

现在,使用我的解决方法,我运行以创建 PNG/PDF 的子进程不知何故崩溃了。我必须 sudo pkill python,只有当我这样做时,我才会在我的服务器上的文件夹中得到一个没有数据的 PNG。

基本上,PhantomJS 已经运行但没有加载任何数据(只有 html/css,但没有需要来自 Flask 服务器的重要内容)并崩溃。这怎么可能?我只是伪造浏览器使用 requests.get 发出的请求,还是我不知道这里有什么?

我认为 subprocess.Popen非阻塞,所以我的数据请求仍然可以得到响应以填充 PNG/PDF?

最佳答案

我终于找到了我的 subprocess 不断崩溃的原因。显然,这是 Python < 2.7.3 中的一个错误,在此处描述:http://bugs.python.org/issue12786

我必须在我的 Popen 调用中使用 'close_fds=True' 并且所有问题都已修复。无论哪种方式,感谢您的努力,@Mark Hildreth!

关于python - 子进程不等待并使 PhantomJS 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19234592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com