私のウェブサイトの要約:ユーザーは「送信」を押すとAJAX経由でバックエンドに情報が提出されます。バックエンドは情報を受信すると、情報を使用してDOCXを生成し、そのDOCXファイルをユーザに返します。ここでPythonAnywhere複数の「Webワーカー」またはプロセスを処理する方法
は私のAJAXコードが
$.ajax({
type:'POST',
url:'/submit/',
data:{
data that I submit
},
dateType: 'json',
success:function() {
document.location = "/submit";
}
})
私のHTMLファイルであるマイビューは/これは今いつかのために完璧に働いているファイル
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
を返すためにsend_fileを使用する/提出するための機能します。しかし、ホスティングアカウントで「Webワーカー」/プロセスの量を1から4に増やしたときに問題が発生しました。何が起きているのかは、別のWebワーカーがファイルを送信するために使用されていることです。これは、サイトの新しいインスタンスを作成することです。その問題は、新しいインスタンスに、ファイルを作成するWebワーカーで作成されたファイルパスが含まれていないことです。
私が言ったように、これは完璧に働いていました。私のWebAppには1人の「Webワーカー」または1つのプロセスしかなかったときでした。今私は約50%の成功率しか持っていません。
これは、プロセスが作成される前にファイルを送信しようとしているようなものです。または、プロセスは、それを作成したプロセスが行うファイル名にアクセスできません。
ご協力いただければ幸いです。ありがとう!
コードpath_nameを要求してからサーバーに戻そうとしています。
送信返信するファイル情報をajaxに戻して表示します。 AJAX
success:function(fileInfo) {
name_last = fileInfo['lastname']
filepath= fileInfo['filepath']
document.location = "/send";
}
の
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")
成功機能は、だから私はFILEINFOは、 "/送信" を送信するために得ることができますか?
デバッグに必要なget_full_path()を追加してください。 – Fian