2016-02-12 4 views
0

Я использую django-wkhtmltopdf для создания PDF-файлов в моем webapp, отлично работает с использованием сервера интеграции django, но когда я использую IIS 7.5 или 8, я получаю эту ошибку: WindowsError [Error 6] недопустимый дескрипторКак сгенерировать PDF-файл с django-wkhtmltopdf в IIS 7.5 - 8

Окружающая среда:

Request Method: GET 
Request URL: http://127.0.0.1:8006/blabla/pdf/10/ 

Django Version: 1.8.5 
Python Version: 2.7.10 
Installed Applications: 
('django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.admin', 
'django.contrib.admindocs', 
'NuevoTicket', 
'crispy_forms', 
'wkhtmltopdf', 
'ckeditor', 
'ckeditor_uploader') 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 
    164.     response = response.render() 
File "C:\Python27\lib\site-packages\django\template\response.py" in render 
    158.    self.content = self.rendered_content 
File "C:\Python27\lib\site-packages\wkhtmltopdf\views.py" in rendered_content 
    78.    cmd_options=cmd_options 
File "C:\Python27\lib\site-packages\wkhtmltopdf\utils.py" in render_pdf_from_template 
    159.        cmd_options=cmd_options) 
File "C:\Python27\lib\site-packages\wkhtmltopdf\utils.py" in convert_to_pdf 
    121.  return wkhtmltopdf(pages=[filename], **cmd_options) 
File "C:\Python27\lib\site-packages\wkhtmltopdf\utils.py" in wkhtmltopdf 
    109.  return check_output(ck_args, **ck_kwargs) 
File "C:\Python27\lib\subprocess.py" in check_output 
    566.  process = Popen(stdout=PIPE, *popenargs, **kwargs) 
File "C:\Python27\lib\subprocess.py" in __init__ 
    702.   errread, errwrite), to_close = self._get_handles(stdin, stdout, stderr) 
File "C:\Python27\lib\subprocess.py" in _get_handles 
    857.     errwrite = _subprocess.GetStdHandle(_subprocess.STD_ERROR_HANDLE) 

Exception Type: WindowsError at /blabla/pdf/10/ 
Exception Value: 6 The handle is invalid 
+1

Возможно, IIS работает под другим пользователем? Это тоже есть: http://stackoverflow.com/questions/3028786/how-can-i-fix-error-6-the-handle-is-invalid-with-pyserial –

ответ

0

Наконец получил, thank's to n1b0r. Я должен обновить метод check_out в python27/Lib/subprocess.py как это

от:

if 'stdout' in kwargs: 
    raise ValueError('stdout argument not allowed, it will be overridden.') 
process = Popen(stdout=PIPE, *popenargs, **kwargs) 

к:

if 'stdout' in kwargs: 
     raise ValueError('stdout argument not allowed, it will be overridden.') 
kwargs.pop('stderr', None) 
process = Popen(stdout=PIPE, stderr=PIPE, stdin=PIPE, *popenargs, **kwargs) 

Это делают это работает в IIS, но дает ошибку, если используйте сервер интеграции django.

 Смежные вопросы

  • Нет связанных вопросов^_^