App Engine выдает ошибки об устаревших файлах - PullRequest
1 голос
/ 27 июня 2019

Просто чтобы быть предельно ясным, вот некоторая начальная информация о моей настройке:

Платформа: Google App Engine

Тип среды: Стандарт

Время выполнения: Python 3

Python Framework: Настой

Веб-сервер: Gunicorn, 2 рабочих

Это приложение-фляга, работающее в стандартной среде исполнения Python3 GAE.

Соответствующая файловая структура:

- api.py
- services/
---- HighLow.py

Как видно из структуры файла, основной файл приложения фляги - api.py.

api.py затем импортирует services/HighLow.py

Соответствующий код из HighLow.py:

def get_today_for_user(self, uid):
    #Connect to MySQL
    conn = pymysql.connect(self.host, self.username, self.password, self.database, cursorclass=pymysql.cursors.DictCursor)
    cursor = conn.cursor()

    uid = bleach.clean(uid)

    cursor.execute("SELECT * FROM highlows WHERE uid='{}' AND DATE(_timestamp) = CURDATE();")

    highlow = cursor.fetchone()

    conn.commit()
    conn.close()

    if highlow == None:
        return {
            "high":"",
            "low":"",
            "total_likes": 0,
            "high_image": "",
            "low_image": ""
        }

    return highlow

Если вы хотите посмотреть полный код для лучшего контекста, вы можете просмотреть его в нашем репозитории GitHub: https://github.com/highlowapp/highlowbackend

Проблема:

Эта установка некоторое время работала нормально, и я был совершенно ей доволен. Однако недавно я начал получать эту ошибку из отчетов об ошибках GCP:

File "/srv/services/HighLow.py", line 380: 'low_image': ""
    at <module> (/srv/api.py:8)
    at <module> (/srv/wsgi.py:1)
    at import_app (/env/lib/python3.7/site-packages/gunicorn/util.py:350)
    at load_wsgiapp (/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py:41)
    at load (/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py:52)
    at wsgi (/env/lib/python3.7/site-packages/gunicorn/app/base.py:67)
    at load_wsgi (/env/lib/python3.7/site-packages/gunicorn/workers/base.py:138)
    at init_process (/env/lib/python3.7/site-packages/gunicorn/workers/base.py:129)
    at spawn_worker (/env/lib/python3.7/site-packages/gunicorn/arbiter.py:583)

Эта ошибка смущает меня по нескольким причинам:

  1. Он не дает никаких исключений, он просто "объявляет", что в строке 380 написано 'low_image': "".
  2. Когда я обновляю код, чтобы изменить эту строку, он выдает мне ту же ошибку. Другими словами, в нем говорится, что строка 380: 'low_image': "", а в действительности (вы можете проверить это в репозитории GitHub) это: "low_image": "" (с двойными кавычками). Я также попытался просто удалить строку, но ошибка продолжает появляться.

Я пытался удалить хранилище подсистемы приложений и снова запустить gcloud app deploy, но это сообщение об ошибке вообще ничего не изменило.

Мой вопрос

Почему я получаю это сообщение об ошибке и как его исправить?

EDIT:

Как я уже говорил выше, я уже пытался удалить корзину staging, но это не сработало.

Кроме того, я использовал инструмент «source» со Stackdriver, чтобы убедиться, что код обновлен.

Наконец, я попытался создать новое приложение App Engine в отдельном проекте, и код работал ... за исключением того, что у меня была идентичная ошибка в моем коде (может быть, я просто забыл запятые сейчас?), Что сделало та же ошибка возникает в другом файле.

Итак, я обновил файл, развернул и вуаля! мое приложение работает!

Однако мне нужно, чтобы он работал в текущем проекте, а не в тестовом проекте. Мне нужен способ очистить все, что GAE знает о чем-либо, и начать все сначала. Есть ли способ сделать это? Или кто-то знает, почему у меня проблемы в первую очередь?

1 Ответ

0 голосов
/ 29 июня 2019

Хорошо, я наконец-то нашел обходной путь и подумал, что поделюсь тем, кто сталкивается с этой проблемой.

Вы знаете, как люди из службы технической поддержки всегда говорят вам, чтобы вы попробовали выключить его, а затем снова включить? Позвольте мне сказать вам, это работает.

Я перешел на App Engine -> Settings -> Disable Application и разрешил его отключить, а затем снова включил с помощью App Engine -> Settings -> Enable Application.

Полагаю, нужно просто перезагрузиться.

...