首页 > 解决方案 > 客户端、App Engine 和 Cloud SQL 之间的高延迟

问题描述

我有一个 Google Flex App Engine 应用程序,它接收带有 JSON 数据的 POST,然后使用 SQLAlchemy 执行插入语句,将 JSON 数据写入 Cloud SQL 数据库。POST 设备(达拉斯)和 App Engine(美国东部)之间的延迟远高于 300 毫秒,有时甚至超过 1500 毫秒。我相信这可能是由于 INSERT 写入速度不佳,尽管负载几乎不是“荒谬”或任何东西。大约高达 5-8 次读取/秒和 150-300 次写入/秒

使用 Flask、SQLAlchemy、MySQL 5.6(在 Cloud SQL 上)和第二代 Google Flex App Engine 实例。

我的问题是我需要降低延迟,但我不知道是什么原因造成的。我已经对将 json 数据发布到由 Google App Engine 托管的 Flask App 页面的 IP 运行 traceroute 和 ping 命令。ping 很好,一跳有打嗝,但它只是一个区域。如果我的延迟太高,IP 可能会丢弃 POST。

from api import app
from sqlalchemy import create_engine
from datetime import datetime, timedelta

engine = create_engine(app.config.get("database_uri"))

Class Events(object):
    @staticmethod
    def add(event):
        connection = engine.connect()
        for observation in event["observations"]:
            try:
                connection.execute("""INSERT INTO events (
                    ...
                ) VALUES (
                    %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
                )""", (
                    ...
                ))
            except Exception as ex:
                print(ex)
        connection.close()

这是由以下原因触发的:

@app.route('/', methods=['POST'])
def events_post():
    data = request.json
    if data["secret"] != app.config.get("secret"):
        return
    Events.add(data["data"])
    return "Success"

标签: pythongoogle-app-enginesqlalchemygoogle-cloud-sql

解决方案


推荐阅读