簡體   English   中英

如何在 Django 中管理與 3rd 方 API 的會話?

[英]How to manage session with 3rd party API in Django?

上下文:我有一個基於 Django 的應用程序。 此應用程序具有各種 REST API 端點,用戶可以在其中收集數據。 其中一些數據需要從第三方 API 中提取。 此外部 API 使用基本身份驗證。

為了獲取這些數據,我在端點邏輯中實現了以下代碼。

    def metadata(jira_key: str, format=None):
        username = "example"
        password = "example"
        try:
            print(f"fetching {jira_key} with '{username}' credentials")
            url = f"https://external.api.com/issue/{jira_key}"
            session = requests.Session()
            session.auth = username, password
            headers = {'Content-Type': 'application/json'}
            response = session.get(
                url, headers=headers)
            print(f"response: {response.status_code}")
            return response

        except Exception as e:
            message = {"error": "Uncaught error", "message": str(e)}
            return message

長話短說; 有用! 這個端點本質上只是另一個 API 的代理。 這樣做是出於安全目的。

但是,我一直在經歷鎖定,需要定期恢復服務帳戶的權限......

我懷疑每次命中端點時都會生成會話。

所以我的問題是:如何實現一個持久的 request.Session() 具有在構建時建立的基本身份驗證,並為每個請求重用?

這個答案解決了您的問題,即在應用程序配置類的ready功能中實例化您的會話,該功能在啟動 django 時僅運行一次,然后存儲在應用程序內存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM