我运行了两个脚本,一个在端口上:80,一个在端口上:81。因为我们的一些用户在使用端口:81的服务器上发生问题时遇到问题,我正试图实现这样的解决方法;
旧的方式,适用于大多数用户:
example.com:81/getpdf/1
subprocess.Popen
调用和.wait()
方法生成PNG和PDF文件send_file()
,PDF将被发送回用户并开始下载我对此问题的解决方法:
example.com/getpdf/1
:80
)发出新的GET请求r = requests.get(url_with_port_81)
,伪造旧的AngularJS请求以创建PNG / PDF send_file()
send_file(r.text)
现在,使用我的解决方法,我运行的子进程创建PNG / PDF以某种方式崩溃。我必须sudo pkill python
,并且只有当我这样做时,我才会在我的服务器上的文件夹中找到一个没有数据的PNG。
基本上,PhantomJS已经运行但没有加载任何数据(只有html / css,但没有重要的东西需要来自Flask服务器)并崩溃。这怎么可能呢?我只是伪造浏览器使用requests.get
发出的请求,或者我在这里不知道什么?
我认为subprocess.Popen
非阻止,因此仍然可以回答我的数据请求以填充PNG / PDF?
答案 0 :(得分:2)
我终于找到了subprocess
一直崩溃的原因。
显然,这是Python中的一个错误< 2.7.3,在此描述:http://bugs.python.org/issue12786
我必须在'close_fds=True'
电话中使用Popen
,所有内容都已修复。非常感谢您的努力,@ Mark Hildreth!