Я думаю, что положить это в файл settings.py
- это не очень хорошая идея. settings.py
должен содержать настройки .
Однако вы можете, например, добавить имя модели, чтобы ее можно было легко изменить. Итак, например:
# settings.py
MODEL_NAME = 'model'
Затем вы можете построить функцию, которая в основном действует как кеш, и периодически обновляет выборку модели:
# utils.py
from datetime import datetime, timedelta
from django.conf import settings
from pickle import loads as ploads
def get_model():
if get_model.model is None or datetime.now() > get_model.exires:
get_model.model = ploads(redis_connection.get(settings.MODEL_NAME))
get_model.expires = datetime.now() + timedelta(hours=2)
return get_model.model
get_model.model = None
get_model.expires= datetime.now()
Таким образом, функция проверяет, модель уже хранится в кеше и все еще действительна. В противном случае он извлекает (новую версию) модели и сохраняет ее. Преимущество такого подхода заключается в том, что если ваш сервер не получает запросы, связанные с моделью. Мы не загружаем и не загружаем новую систему в систему.
Альтернатива заключается в том, что где-то есть такой кеш и, например, планировать некоторую задачу в потоке для периодической выборки новой версии (так что не в se по необходимости , но превентивно ).
затем добавьте эту функцию в ваш код ...
func imagePickerController (_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) {если let img = info [UIImagePickerControllerOriginalImage] как? UIImage {
self.imgProfileImage.image = img
let imgData = UIImageJPEGRepresentation(img, 0.5)!
let parameters = [String : Any]
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imgData, withName: "Folder Name",fileName: "PicName.jpg", mimeType: "image/jpg")
for (key, value) in parameters {
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
} //Optional for extra parameters
},
to:"Your API is Here.")
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseJSON { response in
print(response.result.value)
}
case .failure(let encodingError):
print(encodingError)
}
}
}
self.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
попробуйте это в вашем событии нажатия кнопки --->
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let addPhotos = UIAlertAction(title: "Choose Photo", style: .default) { (addPhoto) in
self.imgPicker.sourceType = .photoLibrary
self.imgPicker.allowsEditing = false
self.present(self.imgPicker, animated: true, completion: nil)
}
let camera = UIAlertAction(title: "Camera Photo", style: .default) { (CameraPhoto) in
self.imgPicker.sourceType = .camera
self.imgPicker.allowsEditing = false
self.present(self.imgPicker, animated: true, completion: nil)
}
let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (Cencel) in
self.dismiss(animated: true, completion: nil)
}
alert.addAction(addPhotos)
alert.addAction(camera)
alert.addAction(cancel)
self.present(alert, animated: true, completion: nil)