У меня возникли проблемы с приложением Django, развернутым в Google App Engine.
Я до сих пор не знаю, как воспроизвести проблему.
Кажется, что приложение случайно зависает.Он просто перестает отвечать (в это время журнал не создается), и, если я захожу на какую-либо страницу приложения, я получаю эту ошибку:
Ошибка: ошибка сервера
Сервер обнаружил ошибку и не смог выполнить ваш запрос.
Пожалуйста, повторите попытку через 30 секунд.
В журналах ошибок не отображаетсяи единственное странное предупреждение, которое я обнаружил, это:
ПРЕДУПРЕЖДЕНИЕ OpenBLAS - не удалось определить размер кэша L2 в этой системе, предполагая 256k
У меня нетлюбые проблемы при запуске приложения на моем компьютере с Ubuntu.
Я использую Django 2.1.5 с Python 3.7, и Django подключается к экземпляру MySQL (в Google Cloud SQL).
Дополнительная информация:
Файл app.yaml является очень простым и взят из официального примера :
# [START django_app]
runtime: python37
service: backend
handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
- url: /static
static_dir: static/
# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined, but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
script: auto
# [END django_app]
Выдержка из конфигурации Django:
INSTALLED_APPS = [
...
'rest_framework',
'rest_framework_filters',
'django_rest_passwordreset',
'django_filters',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
'DEFAULT_FILTER_BACKENDS': [
'rest_framework_filters.backends.RestFrameworkFilterBackend',
'django_filters.rest_framework.DjangoFilterBackend',
],
}
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=60),
'REFRESH_TOKEN_LIFETIME': timedelta(hours=10),
'ROTATE_REFRESH_TOKENS': True,
'ALGORITHM': 'HS256',
'SIGNING_KEY': "XXXXXX",
}
Стоит отметить, что есть обычайm установленных приложений, которые обращаются к базе данных MySQL как с помощью обычного Django ORM, так и напрямую запрашивая ряд различных баз данных с использованием библиотеки pymysql .