Мы настроили нашу стандартную службу Python 3 App Engine Standard для подключения к Cloud Memorystore через службу Serverless VPC (согласно документации и другим потокам переполнения стека). (Я включил конфигурацию app.yaml ниже). Все это работало хорошо, если экземпляр не работал некоторое время. Со временем мы увидели большой объем:
- Длинные необъяснимые зависания при звонках в Memorystore, хотя в конечном итоге они работали
redis.exceptions.ConnectionError: Error 110 connecting to 10.0.0.12:6379. Connection timed out.
redis.exceptions.TimeoutError: Timeout reading from socket
Это произошло в тот момент, когда мне пришлось вернуться в App Engine Flexible, где сервис работает отлично без каких-либо из перечисленных проблем.
Мой вывод заключается в том, что Serverless VPC делаетне обрабатывать тот факт, что клиент Redis изо всех сил пытается оставить соединение для Redis открытым все время. Я попробовал несколько вариантов настроек тайм-аута, но ничего не помогло. Кто-нибудь успешно развернул App Engine Standard, Memorystore и VPC без сервера?
env_variables:
REDISHOST: <IP>
REDISPORT: 6379
network:
name: "projects/<PROJECT-ID>/global/networks/default"
vpc_access_connector:
name: "projects/<PROJECT-ID>/locations/us-central1/connectors/<VPC-NAME>
Код, используемый для подключения к Memorystore (с использованием redis-py ):
REDIS_CLIENT = redis.StrictRedis(
host=REDIS_HOST,
port=REDIS_PORT,
retry_on_timeout=True,
health_check_interval=30
)
(Я пробовал различные настройки тайм-аута, но не смог найти ничего, что помогло)