From 901172a194d0acb158ef0accbfaeafc5e011558c Mon Sep 17 00:00:00 2001 From: Simon Lejeune Date: Mon, 24 Feb 2014 14:47:32 +0100 Subject: [PATCH] [FIX] Workaround to get printing done with 1 worker bzr revid: sle@openerp.com-20140224134732-imptqwtzyoyml2qq --- addons/report/controllers/main.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/addons/report/controllers/main.py b/addons/report/controllers/main.py index 99a672a1dd8..ecdf5b09647 100644 --- a/addons/report/controllers/main.py +++ b/addons/report/controllers/main.py @@ -23,6 +23,7 @@ from openerp.osv.osv import except_osv from openerp.addons.web import http from openerp.tools.translate import _ from openerp.addons.web.http import request +import openerp.tools.config as config import time import base64 @@ -35,6 +36,10 @@ try: import cStringIO as StringIO except ImportError: import StringIO +import psutil +import signal +import os + from pyPdf import PdfFileWriter, PdfFileReader from werkzeug import exceptions @@ -322,6 +327,12 @@ class Report(http.Controller): content_file.seek(0) try: + # If the server is running with only one worker, increase it to two to be able + # to serve the http request from wkhtmltopdf. + if config['workers'] == 1: + ppid = psutil.Process(os.getpid()).ppid + os.kill(ppid, signal.SIGTTIN) + wkhtmltopdf = command + command_args + command_arg_local wkhtmltopdf += [content_file.name] + [pdfreport.name] @@ -329,6 +340,9 @@ class Report(http.Controller): stderr=subprocess.PIPE) out, err = process.communicate() + if config['workers'] == 1: + os.kill(ppid, signal.SIGTTOU) + if process.returncode != 0: raise except_osv(_('Report (PDF)'), _('wkhtmltopdf-0.12 failed with error code = %s. '