Tôi đang sử dụng phiên yêu cầu với xác thực oauth2. Mọi thứ hoạt động hoàn hảo khi tôi tải lên các tệp nhỏ, nhưng đối với tệp 4GB tôi nhận được lỗi hết hạn mã thông báo, có vẻ như tệp đã được tải lên nhưng tại phần mã thông báo phiên đóng đã được xác thực một lần nữa.Mã hết hạn trước khi tệp được tải lên
Có cơ hội để xử lý tình huống này không? Tải lên tệp lớn với mã thông báo được làm mới trước khi phiên bị đóng hoặc gì đó?
mẫu của mã bên dưới, Cảm ơn bạn rất nhiều vì đã giúp đỡ. Chúc mừng!
import requests
from io import StringIO
from requests_toolbelt.multipart.encoder import MultipartEncoder
TOKEN_PAYLOAD = {
'grant_type': 'password',
'client_id': '###',
'client_secret': '###',
'username': '###',
'password': '####'
}
def get_token():
response = requests.post(
'https://oauth/token',
params=TOKEN_PAYLOAD)
response_data = response.json()
token = response_data.get('access_token')
return token
# Create test file
MB = 1024 ** 2
GB = MB * 1024
encoded_string = 'x' * 4 * GB
file_test = StringIO()
file_test.write(encoded_string)
# Get token
token = get_token()
# Create form
multipart_data = MultipartEncoder(
fields={
'--': ('4GB_test.txt', file_test, 'text/plain'),
'id': '2217',
'fileFieldDefId': '4258',
}
)
# Create headers
headers = {
"Authorization": "Bearer {}".format(token),
'Content-Type': multipart_data.content_type
}
session = requests.Session()
response = session.post(
'https://oauth2/rest/external/item/multipartUpdate/byId',
headers=headers,
data=multipart_data,
)
print(response)
# <Response [401]>
print(response.content)
# b'{"error":"invalid_token","error_description":"Access token expired: 0f7f6bd9-4e21-407f-4a78347711a9"}'
# response.close() ? with refreshed token
# session.close() ? with refreshed token
Bạn có thể thay đổi phía máy chủ của logic upload hoặc bạn không có quyền kiểm soát nó? –
Không, tôi không có quyền truy cập vào máy chủ, chỉ với các điểm cuối API –