[英]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.