2011-06-27 125 views
1

我正在嘗試在Tornado中編寫一個應用程序,該應用程序在收到包含類別的POST請求後,會調用一個函數來阻止HTTP請求到一個RSS列表(包含在CouchDB數據庫中),然後對數據執行一些排序,將字典返回給Tornado異步請求處理程序。到目前爲止,用戶第一次訪問它似乎工作得相當好。龍捲風:在異步處理程序中阻止HTTP請求

對同一頁面的第二次POST請求,它通常會合並從多個類別收集的結果,就好像每個類別的函數調用都由於某種原因而合併。我是事件驅動編程的新手,我不知道爲什麼會發生這種情況。這會變得一團糟,因爲用戶將點擊一個類別並獲得兩者的結果。

這裏有點結構的示意圖:

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

任何想法,爲什麼這些電話越來越結合起來呢?我的RSS處理程序類清除了其init函數中的所有成員變量,就像執行處理的get_data函數一樣。

(會一直包含的代碼,但是有太多的它確實貼在這裏,我不知道哪條線是造成它)

回答

1

沒有更多細節很難回答的問題。這聽起來像使用全局變量或類似的問題。幫助調試此類問題的一個好方法是在每個步驟修改數據之前和之後添加日誌記錄語句。

在命令行上運行您的龍捲風應用程序--logging=debug以啓用DEBUG級別日誌記錄。然後添加日誌記錄語句以幫助追蹤額外數據的添加位置。

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

開始記錄一些數據,發現奇怪的是,它使用的是我已經有的類的一部分(RSS處理程序的一部分)。奇怪!但是,多虧了你的回答,我解決了它。欣賞它! –