小编Rob*_*Rob的帖子

CherryPy HTTPError 自定义响应处理(*不是* HTML)

我在为 提供自定义响应处理时遇到问题cherrypy.HTTPError。我想要在响应正文中显示的唯一内容是 JSON 编码的字典(这是 REST API)。源代码似乎表明HTTPError.set_response()可以用来修改cherrypy.response对象...引用这个方法中的注释:

修改cherrypy.response状态、标题和正文以代表自身。CherryPy 在内部使用它,但您也可以使用它来创建 HTTPError 对象并设置其输出,而不会*引发*异常。

我对 HTTPError 进行了子类化,以提供我自己的响应正文。我调用基类方法来确保进行任何必要的内务处理。

class APIError(cherrypy.HTTPError):
    def __init__(self, err_resp):
        super().__init__(status=err_resp['error_code'])
        self._api_err_resp = err_resp

    def set_response(self):
        super().set_response()
        response = cherrypy.serving.response
        response.body = json.dumps(self._api_err_resp).encode()
Run Code Online (Sandbox Code Playgroud)

我现在可以APIError毫无问题地调用,但我遇到的问题是,一旦出现自定义错误,CherryPy Web 服务器大约需要 10-15 秒才能响应我的客户端(如果我使用,我不会遇到任何延迟HTTPError)。我追踪了源代码,但找不到延迟的原因。

任何帮助,将不胜感激。

cherrypy

5
推荐指数
1
解决办法
1333
查看次数

通过聚合将表连接到自身

我正在尝试(有效地)从连接表中获取行,其中startdate是cpid中的最新行 - 对于选定的cpid.

这是一个连接表中数据的示例,其中我想要用<<<标记的行

connid   cpid  startdate
1        20    7/17/16
2        20    8/23/16
3        20    9/12/16 <<<
4        30    6/17/16
5        30    8/23/16 <<<
6        40    2/24/16
7        40    3/17/16
8        40    5/18/16 <<<
etc...
Run Code Online (Sandbox Code Playgroud)

此查询返回最新的startdate和cpid,但我不确定如何将其与自身连接以获得我需要的结果:

select cpid, max(startdate)
from connections
where cpid in (  
20,
30,
40
)
group by cpid
Run Code Online (Sandbox Code Playgroud)

我正在寻找的结果如下:

connid   cpid  startdate
3        20    9/12/16
5        30    8/23/16
8        40    5/18/16
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!
ROBM

sql t-sql sql-server self-join

3
推荐指数
1
解决办法
50
查看次数

标签 统计

cherrypy ×1

self-join ×1

sql ×1

sql-server ×1

t-sql ×1