2017-03-17 24 views
0

我正在使用web.py來託管一個簡單的web服務。 Web服務在後端(ClassA內部)運行分析應用程序。在web.py的初始化過程中,我想將所有數據預加載到內存中(例如,當Web服務器啓動時只調用一次= ClassA()),並且當用戶發送Web請求時,Web服務器只會響應預先計算的結果(即返回a.do_something)。在webpy上只初始化python類一次

下面的代碼似乎在每次收到HTTP POST請求時運行init()類。這是浪費時間,因爲初始化階段需要很長時間。是否有可能只初始化ClassA一次?

import web 
from aclass import ClassA 

urls = (  
    '/add', 'add' 
) 

class add: 
    def __init__(self): 
     a = ClassA() 

    def POST(self): 
     return a.do_something() 

if __name__ == "__main__": 
    app = web.application(urls, globals()) 
    app.run() 

回答

2

嘗試:

class add: 
    a = ClassA() 

    def POST(self): 
     return add.a.do_something() 

這將使其成爲一流的綁定參數,而不是一個實例綁定一個,即只初始化一次。

+0

工作,但不''self.a.do_something()'比'add.a.do_something()'更好?無論哪種方式,初始化只發生一次。 – pbuck

+0

我不能判斷哪一個更好,我只是想強調一下,它是綁定到類,而不是實例。 (我可以看到的一個優點是,使用'self'你可以在不破壞函數的情況下重命名類。) – Pit