Почему сервер Apache выдает синтаксическую ошибку с модулем загрузки снежинок в python - PullRequest
2 голосов
/ 12 января 2020

У меня есть приложение flask, работающее на сервере apache в поле Linux (экземпляр ec2), которое вызывает скрипт python, который выполняет перемещение файлов из s3 в снежинку. Сценарий работает нормально, если выполняется напрямую. При попытке разместить его на модуле apache с использованием virtualhost и mod_wsgi выдается приведенная ниже ошибка для модуля снежинки python. Модуль устанавливается в пакеты сайта по умолчанию.

Apache версия сервера: 2.4.41

Python Версия: 3.7

снежинка: снежинка_коннектор_ python - 2.1.3-py3.7-nspkg.pth

ОС: AMAZON linux 2

Ниже приведен журнал ошибок apache, когда я пытаюсь перезапустить :

[пт 10 января 15: 47: 53.703083 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] mod_wsgi (pid = 19755): целевой сценарий WSGI '/ var / www/FLASKAPPS/snowflakeingestapp/snowflakeingestapp.wsgi 'нельзя загрузить как модуль Python.

[Пт 10 января 15: 47: 53.703113 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] mod_wsgi (pid = 19755) : Возникла исключительная ситуация при обработке сценария WSGI '/var/www/FLASKAPPS/snowflakeingestapp/snowflakeingestapp.wsgi'.

[Пт 10 января 15: 47: 53.703129 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] Traceback ( последний последний вызов):

[пт 10 января 15: 47: 53.703142 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] Файл "/ var / www/FLASKAPPS/snowflakeingestapp/snowflakeingestapp.wsgi", строка 4, в

[пт 10 января 15: 47: 53.703176 2020] [: ошибка] [pid 19755] [удаленный 67.79.20 2.36: 20] из приложения импорта снежинок как приложение

[Пт 10 января 15: 47: 53.703181 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] Файл "/ var / www/FLASKAPPS/snowflakeingestapp/ init .py ", строка 6, в

[пт. 10 января 15: 47: 53.703206 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] импорт Snowke_ingest

[Пт 10 января 15: 47: 53.703210 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] Файл "/ var / www/FLASKAPPS/snowflakeingestapp/snowflake_ingest/ init . py ", строка 1, в

[пт 10 января 15: 47: 53.703225 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] import ingest_ecomm_json_snowpipe

[пт 10 января 15: 47: 53.703230 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] Файл "/ var / www/FLASKAPPS/snowflakeingestapp/snowflake_ingest/ingest_ecomm_json_snowpipe.py", строка 20, в

[пт 10 января 15 : 47: 53.703296 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] из Snowke.ingest import SimpleIngestManager

[Пт 10 января 15: 47: 53.703300 2020] [: ошибка] [ pid 19755] [remote 67.79.202.36:20] Файл "/usr/local/lib/python3.7/site-pack возраст / снежинка / загрузка / init .py ", строка 1, в

[пт 10 января 15: 47: 53.703315 2020] [: ошибка] [pid 19755] [удаленный 67.79. 202.36: 20] из .simple_ingest_manager import SimpleIngestManager, StagedFile

[Пт 10 января 15: 47: 53.703342 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] Файл "/ usr / local / lib / python3 .7 / site-packages / снежинка / ingest / simple_ingest_manager.py ", строка 65

[пт 10 января 15: 47: 53.703345 2020] [: ошибка ] [pid 19755] [remote 67.79.202.36:20] def init (self, account: Text, user: Text, pipe: Text, private_key: Text,

[Пт 10 января] 15: 47: 53.703347 2020] [: ошибка] [pid 19755] [удаленный 67.79.202.36:20] ^

[Пт 10 января 15: 47: 53.703350 2020] [: ошибка] [pid 19755] [ удаленный 67.79.202.36:20] SyntaxError: неверный синтаксис

1 Ответ

4 голосов
/ 12 января 2020

Похоже, что когда вы выполняете это из mod_wsgi, вы используете Python 2 вместо Python 3. Сообщение об ошибке, которое вы видите, происходит потому, что простой менеджер загрузки Snowflake использует подсказки типа (через typing module), которые недоступны в Python 2.

Вот простой фрагмент, который завершается ошибкой с той же ошибкой в ​​Python 2, но завершается успешно Python 3:

from typing import Text
def foo(bar: Text):
    print(bar)
foo('huh') 
...