gpt4 book ai didi

python - Tornado:在异步处理程序中发出阻塞 HTTP 请求

转载 作者:太空宇宙 更新时间:2023-11-03 19:29:46 25 4
gpt4 key购买 nike

我正在尝试在 Tornado 中编写一个应用程序,在收到包含类别的 POST 请求后,将调用一个函数,该函数将向 RSS 提要列表(保存在 CouchDB 数据库中)发出(阻止)HTTP 请求该主题,然后对数据执行一些排序,将字典返回到 Tornado 异步请求处理程序。到目前为止,当用户第一次访问它时,它似乎工作得相对较好。

在对同一页面的第二个 POST 请求中,它通常会合并从多个类别收集的结果,就好像每个类别的函数调用由于某种原因而合并一样。我是事件驱动编程的新手,我不知道为什么会发生这种情况。它变得一团糟,因为用户单击一个类别并获得两个类别的结果。

这是结构图:

Calls:  Tornado Async Handler -> get_data(category) -> RSS_handler(RSS_feed)
Returns: self.write(data) <- more_data <- some_data

知道为什么这些调用会合并吗?我的 RSS 处理程序类清除其 init 函数中的所有成员变量,执行处理的 get_data 函数也是如此。

(本应包含代码,但代码太多,无法真正粘贴到此处,而且我不知道是哪一行导致的)

最佳答案

如果没有更多细节,很难回答。这听起来像是使用全局变量或类似的东西的问题。帮助调试此类问题的一个好方法是在每个步骤修改数据之前和之后添加日志记录语句。

在命令行上使用--logging=debug运行您的tornado应用程序以启用DEBUG级别日志记录。然后添加日志记录语句以帮助跟踪添加额外数据的位置。

import logging
...
def on_response(self, response):
logging.debug(response)
self.write(response.body)

关于python - Tornado:在异步处理程序中发出阻塞 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com