我有一个Python App Engine应用程序,它每天提供约3M的请求。我正试图优化应用程序以节省我可笑的气球托管账单。Python App Engine webapp2路由速度慢
November, App Engine Frontend Instances: 12924.391 Hours, $604.22
我的请求处理到一些memcached的电话,但现在我已经注意到,它通常需要大约20毫秒,只要有时166毫秒webapp2的前甚至将请求传递给我。
在下面的图片中,您可以看到显示“后”在166ms发生的跟踪。
下面是这个服务的代码。
import logging
logging.info("main.py logging imported")
from imports import *
from handlers import *
logging.info("completed importing others")
class Main(webapp.RequestHandler):
def post(self):
logging.info("Post")
self.get()
...
app = webapp.WSGIApplication(
[
('/.*', Main)
],
debug=False
)
我试过了什么?
我有线程安全启用,所以任何进口不应该发生在请求服务之前。可以肯定的是,我还添加了日志记录以查看导入的时间,以及您可以看到他们没有完成每个请求。
更多信息
这不是重要的是,延迟低,除了节省托管费用。即使使用1分钟响应时间(请求是API webhook),我也可以,只要它不计入前端实例时间即可!
如果它是相关的,这是我的app.yaml的开始。
application: coolestsports-hrd
version: 1
runtime: python27
threadsafe: yes
api_version: 1
automatic_scaling:
min_idle_instances: 1
min_pending_latency: 1000ms
我不确定你的网址方案是什么样子,但如果可能的话,它可能有助于从匹配的网址中删除通配符字符 –
@BRadC我为app.yaml顶部的url添加了直接路由,在通配符之前的WSGIApplication中也是如此,但看起来并不一样(每个请求仍然需要20+毫秒)。 – Bemmu
我不知道“前端实例”时间是否包含TCP套接字建立成本(包括往返)?这可能可以解释这 – Bemmu