Javascript python如何处理多个“web工作者”或进程
我的网站摘要:用户填写一些信息,点击“提交”后,信息通过AJAX提交到后端。在后端接收到信息后,它使用该信息生成一个DOCX,并将该DOCX文件返回给用户 这是我的HTML文件中的AJAX代码Javascript python如何处理多个“web工作者”或进程,javascript,jquery,ajax,django,pythonanywhere,Javascript,Jquery,Ajax,Django,Pythonanywhere,我的网站摘要:用户填写一些信息,点击“提交”后,信息通过AJAX提交到后端。在后端接收到信息后,它使用该信息生成一个DOCX,并将该DOCX文件返回给用户 这是我的HTML文件中的AJAX代码 $.ajax({ type:'POST', url:'/submit/', data:{ data that I submit }, dateType: 'json', succ
$.ajax({
type:'POST',
url:'/submit/',
data:{
data that I submit
},
dateType: 'json',
success:function() {
document.location = "/submit";
}
})
使用send_file返回文件的/submit/的“我的视图”函数
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
这已经完美地工作了一段时间了。但是,当我将托管帐户中的web工作人员/进程数量从1增加到4时,我开始出现问题。现在发生的是一个不同的web worker被用来发送文件,它正在创建一个新的站点实例来执行此操作。问题是新实例不包含由创建文件的web worker创建的文件路径
正如我所说的,当我的webApp只有一个web工作者或一个进程时,这一切都是完美的。现在我只有大约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";
}
那么我可以通过/send获取要发送的文件信息吗 每个web worker都是一个单独的进程。他们无权访问在另一个辅助进程中设置的变量。每个请求都可以发送给任何工作者,因此不能保证您会使用为特定用户设置的文件名。如果您需要在请求之间传输信息,您需要将其存储在工作人员的内存之外-您可以在cookie、数据库或文件中进行此操作。请添加get_full_路径,这是调试所需的。好的,我该怎么做?我尝试通过正在工作的提交返回发送文件路径。但是我不知道如何获得success函数来提交文件路径。这有意义吗?我在上面的底部添加了我尝试的代码。谢谢你的帮助!没关系,我成功了!我使用cookies保存文件路径。谢谢你的帮助