#python #flask #iis
#python #flask #iis
Вопрос:
Я застрял в этой настройке почти на неделю. Надеюсь, что кто-нибудь сможет провести меня через это.
Настройка
-
Я настроил сервер IIS, на котором выполняется код Flask python. (Используя wfastcgi.py )
-
Я настроил идентификатор пула приложений для своей учетной записи. (Разрешение администратора)
-
Я изменил разрешения для всех файлов, которые необходимы для этого веб-развертывания, на «Все» — полный контроль (чтение, запись, выполнение). (Я понимаю риски безопасности, это моя промежуточная среда.)
-
Веб-сервер работает нормально, и я проверил, используя нижний код, чтобы узнать, что мое разрешение на python является администраторским.
def am_i_admin(): try: is_admin = os.getuid() == 0 except AttributeError: is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0 if is_admin == True: return "ADMIN" else: return "USER"
Заявление о проблеме
-
Я пытаюсь запустить приватный код администратора на моем сервере flask IIS, который позволяет выполнять пользователю в той же сети; например
subprocess.run(['ipconfig'], stdout=subprocess.PIPE) pyautogui.screenshot() #which take a screenshot of the web server and send over to the client.
-
Я работал на своем локальном ноутбуке jupyter, и вышеупомянутые функции работали отлично.
-
Но ему не удалось запустить на сервере IIS flask.
-
Я также попытался настроить pyautogui на сервере flask (автономно, без IIS), это сработало.
-
В чем проблема с сервером IIS?? Или есть еще что-то, что мне нужно настроить. Существуют ли функции безопасности, которые я могу отключить?
Сообщение об ошибке подпроцесса:
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "c:usersaspnetanaconda3libsite-packageswfastcgi.py", line 791, in main
env, handler = read_wsgi_handler(response.physical_path)
File "c:usersaspnetanaconda3libsite-packageswfastcgi.py", line 633, in read_wsgi_handler
handler = get_wsgi_handler(os.getenv("WSGI_HANDLER"))
File "c:usersaspnetanaconda3libsite-packageswfastcgi.py", line 600, in get_wsgi_handler
handler = __import__(module_name, fromlist=[name_list[0][0]])
File ".my_app.py", line 58, in <module>
out = os.popen("ipconfig").read()
File "c:usersaspnetanaconda3libos.py", line 990, in popen
bufsize=buffering)
File "c:usersaspnetanaconda3libsubprocess.py", line 753, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "c:usersaspnetanaconda3libsubprocess.py", line 1090, in _get_handles
errwrite = _winapi.GetStdHandle(_winapi.STD_ERROR_HANDLE)
OSError: [WinError 6] The handle is invalid
StdOut:
StdErr:
ошибка pyautogui:
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "c:usersaspnetanaconda3libsite-packageswfastcgi.py", line 791, in main
env, handler = read_wsgi_handler(response.physical_path)
File "c:usersaspnetanaconda3libsite-packageswfastcgi.py", line 633, in read_wsgi_handler
handler = get_wsgi_handler(os.getenv("WSGI_HANDLER"))
File "c:usersaspnetanaconda3libsite-packageswfastcgi.py", line 600, in get_wsgi_handler
handler = __import__(module_name, fromlist=[name_list[0][0]])
File ".my_app.py", line 45, in <module>
pyautogui.screenshot()
File "c:usersaspnetanaconda3libsite-packagespyscreeze__init__.py", line 135, in wrapper
return wrappedFunction(*args, **kwargs)
File "c:usersaspnetanaconda3libsite-packagespyscreeze__init__.py", line 427, in _screenshot_win32
im = ImageGrab.grab()
File "c:usersaspnetanaconda3libsite-packagesPILImageGrab.py", line 44, in grab
include_layered_windows, all_screens
OSError: screen grab failed
StdOut:
StdErr:
Ответ №1:
Файл «c:usersaspnetanaconda3libsite-packagesPILImageGrab.py «, строка 44, в grab include_layered_windows, ошибка ОС all_screens: ошибка захвата экрана
Чтобы решить проблему, установите stderr и stdin в subprocess.КАНАЛ:
['where', 'wkhtmltopdf'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0].strip()
Ссылка:https://github.com/foliojs/pdfkit/issues/714
Файл «c:usersaspnetanaconda3libsite-packagesPILImageGrab.py «, строка 44, в grab include_layered_windows, ошибка ОС all_screens: ошибка захвата экрана
Используйте приведенный ниже код:
from PIL import ImageGrab
или
from PIL import Image