非常清楚,这是有关我的设置的一些初始信息:
平台:Google App Engine
环境类型:标准
运行时: Python 3
Python框架: Flask
Web服务器: Gunicorn,有2名员工
这是在GAE标准python3运行时上运行的flask应用。
相关文件结构:
- 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)
此错误使我感到困惑,原因有两个:
'low_image': ""
。 'low_image': ""
,实际上(您可以在GitHub存储库上进行验证)是:"low_image": ""
(带双引号)。我也尝试过简单地删除该行,但是错误仍然出现。我尝试删除应用程序引擎的存储桶并重新运行gcloud app deploy
,但该错误消息根本没有改变。
我的问题
为什么会收到此错误消息,以及如何解决?
编辑:
如上所述,我已经尝试删除staging
存储桶,但这没用。
我还使用了带有Stackdriver的“源”工具来验证代码是否已更新。
最后,我尝试在一个单独的项目中创建一个新的App Engine应用程序,并且代码可以正常工作……只是我的代码中存在相同的错误(也许我现在只是忘记了逗号?),这使得在另一个文件中发生相同的错误。
所以我更新了文件,重新部署了,瞧!我的应用程序有效!
但是,我需要它在当前项目中工作,而不是在测试项目中工作。我需要一种方法来清除GAE知道的任何事情,然后重新开始。有没有办法做到这一点?还是有人知道我为什么首先遇到问题?
答案 0 :(得分:0)
好吧,我终于找到了解决方法,并想与遇到此问题的其他人分享。
您知道技术支持人员总是如何告诉您尝试将其关闭然后再打开吗?让我告诉你,它有效。
我去了App Engine -> Settings -> Disable Application
,让它禁用,然后用App Engine -> Settings -> Enable Application
重新启用它。
我猜只是需要“重启”。