我已經使用Flask框架實現了簡單的API,現在我正試圖將它部署到gunicorn服務器。使用Flask和gunicorn加載服務器的全局數據
我的服務器腳本如下所示:
app = Flask(__name__)
class Server(object):
def __init__(self, data):
self.data = data
@app.route("/api_method", methods=['GET', 'POST'])
def api_method():
return server.data
if __name__ == '__main__':
with smart_open(sys.argv[1]) as f:
server = Server(f.read())
app.run()
當我運行這個從控制檯的「瓶的應用程序」比一切都很好,但是當我嘗試下gunicorn運行這個話,根本看不到服務器。我只能通過移動服務器創建來修復它,但我必須對路徑進行硬編碼。
有沒有什麼辦法如何在啓動gunicorn服務器時加載類似我的Server類的東西,然後在API方法中讀取它?
其實全局對象g的版本只對一個請求有效。我意識到,然後加載的對象消失,這不是我真正想要的。所以app.config ['server'] = ...是正確的解決方案。 – ziky90 2015-02-25 08:45:56
啊,沒錯。對於那個很抱歉。我誤解了'before_first_request'和'before_request'。我使用正確的信息更新了我的文章,並添加了關於如何在應用程序工廠中使用before_request的示例。 – 2015-02-25 17:58:32
謝謝,在我的情況下,文件可以很安靜,可以在S3上遠程執行(我之所以使用'smart_open'庫而不是標準'open')。因此,在每個請求之前仍然加載文件是安靜的問題,但'app.config ['server'] = Server(f.read())'適合我。 – ziky90 2015-02-25 22:26:01