import tornado.web # web服務import tornado.ioloop # i/o 時間迴圈
class mainhandler(tornado.web.requesthandler):
def initialize(self,name):
self.name = name
print 'initialize方法執行'
def prepare(self):
print 'prepare方法執行'
def set_default_headers(self):
print 'set_default_headers方法執行'
self.set_header("access-control-allow-origin", "*")
self.set_header("access-control-allow-headers", "x-requested-with")
self.set_header("access-control-allow-methods", "post, get, options")
# 響應以get方式發起的請求
def get(self, *args, **kwargs):
print 'get方法執行'
self.write("hello world!")
# 響應以post方式發起的請求
def post(self, *args, **kwargs):
print 'post方法執行'
self.write(json.dumps())
def on_finish(self):
print 'on_finish方法執行'
def write_error(self, status_code, **kwargs):
print 'write_error方法執行'
super().write_error(status_code, **kwargs)
(r"/index", mainhandler, dict(name="name")),
])if __name__ == "__main__":
# tornado.ioloop.ioloop.current().start()
tornado.ioloop.ioloop.instance().start() # 開始事件
在正常情況下沒跑出錯誤的順序:
跑出異常錯誤的情況下的順序:
優雅列印介面呼叫時長
優雅的api設計不僅僅是 層面的書寫規範.幾乎不可能api開發完畢就能正常投入使用,更多的是對細節的打磨.例如介面的每次執行時間,入參都會在api測試中反覆的推敲 如何設計乙個方案使開發者能一目了然的視覺化介面的處理時間以及入參是否正確呢?首先想到的是spring的aop切面,現在我們編寫api介面...
方法呼叫時的記憶體分配
遵循的呼叫約定 cdecl 支援jvm進行方法呼叫和方法執行的資料結構。棧幀儲存了方法的區域性變數表,運算元棧,動態連線和方法返回位址等資訊。每進行一次方法呼叫,便會為該方法建立乙個棧幀,當方法呼叫執行完成後,棧幀便會銷毀,因此方法內的區域性變數都不復存在。當進行方法呼叫時,首先判斷是否需要傳參,如...
介面後台呼叫方法
建立請求鏈結 string strurl this.txtcode.text.trim 傳送乙個請求 webrequest wrt webrequest.create strurl 獲取請求響應 webresponse wrse wrt.getresponse 將請求轉換為流的形式 stream s...