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. '