Резюме моего веб-сайта: Пользователь заполняет некоторую информацию, которая после нажатия «отправить» информацию передается на бэкэнд через AJAX. Получив информацию на задней стороне, он генерирует DOCX, используя эту информацию, и возвращает этот файл DOCX пользователю.PythonAnywhere Как обрабатывать несколько «веб-работников» или процессы
Вот мой AJAX код в моем HTML файл
$.ajax({
type:'POST',
url:'/submit/',
data:{
data that I submit
},
dateType: 'json',
success:function() {
document.location = "/submit";
}
})
Мои взгляды Функция для/отправить /, который использует send_file вернуть файлу
def submit(request):
#Receive Data
#Create a File with the Data and save it to the server
return send_file(request)
def send_file(request):
lastName = get_last_name() +'.docx'
filename = get_full_path() # Select your file here.
wrapper = FileWrapper(open(filename , 'rb'))
response = HttpResponse(wrapper, content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document')
response['Content-Disposition'] = 'attachment; filename=' + lastName
response['Content-Length'] = os.path.getsize(filename)
return response
Это работало безупречно когда-то теперь. Однако у меня возникли проблемы, когда я увеличил количество «веб-работников»/процессов от 1 до 4 в моей учетной записи хостинга. Случается, что другой веб-рабочий используется для отправки файла, который создает новый экземпляр сайта для этого. Проблема в том, что новый экземпляр не содержит путь к файлу, который создается с веб-рабочим, который создает файл.
Как я уже сказал, это работало безупречно, когда у моего webApp был только один «веб-рабочий» или один процесс. Теперь у меня есть примерно 50% успеха.
Его почти как процесс пытается отправить файл до его создания. Или процесс не имеет доступа к имени файла, которое создал процесс.
Любая помощь будет высоко оценена. Благодаря!
Код Пытается отправить имя пути через запрос, а затем обратно на сервер.
Отправить Посмотреть информацию о возвращаемом файле обратно в ajax.
def submit(request):
# Receive DATA
# Generate file with data
lastName = get_last_name() +'.docx'
filename = get_full_path() # Select your file here.
return HttpResponse(json.dumps({'lastname': lastName,'filename':filename}), content_type="application/json")
Успех Функция AJAX
success:function(fileInfo) {
name_last = fileInfo['lastname']
filepath= fileInfo['filepath']
document.location = "/send";
}
Так я могу получить FILEINFO отправить с "/ отправить"?
Пожалуйста, добавьте get_full_path(), это необходимо для отладки. – Fian