Просто чтобы быть предельно ясным, вот некоторая начальная информация о моей настройке:
Платформа: 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)
Эта ошибка смущает меня по нескольким причинам:
- Он не дает никаких исключений, он просто "объявляет", что в строке 380 написано
'low_image': ""
.
- Когда я обновляю код, чтобы изменить эту строку, он выдает мне ту же ошибку. Другими словами, в нем говорится, что строка 380:
'low_image': ""
, а в действительности (вы можете проверить это в репозитории GitHub) это: "low_image": ""
(с двойными кавычками). Я также попытался просто удалить строку, но ошибка продолжает появляться.
Я пытался удалить хранилище подсистемы приложений и снова запустить gcloud app deploy
, но это сообщение об ошибке вообще ничего не изменило.
Мой вопрос
Почему я получаю это сообщение об ошибке и как его исправить?
EDIT:
Как я уже говорил выше, я уже пытался удалить корзину staging
, но это не сработало.
Кроме того, я использовал инструмент «source» со Stackdriver, чтобы убедиться, что код обновлен.
Наконец, я попытался создать новое приложение App Engine в отдельном проекте, и код работал ... за исключением того, что у меня была идентичная ошибка в моем коде (может быть, я просто забыл запятые сейчас?), Что сделало та же ошибка возникает в другом файле.
Итак, я обновил файл, развернул и вуаля! мое приложение работает!
Однако мне нужно, чтобы он работал в текущем проекте, а не в тестовом проекте. Мне нужен способ очистить все, что GAE знает о чем-либо, и начать все сначала. Есть ли способ сделать это? Или кто-то знает, почему у меня проблемы в первую очередь?