Мы настроили нашу службу App Engine Standard python 3 для подключения к Cloud Memorystore через бессерверную службу 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, где служба отлично работает без каких-либо из вышеперечисленных проблем.
Я пришел к выводу, что бессерверный 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
)
(Я пробовал различные настройки тайм-аута, но не нашел ничего, что помогло бы)