Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript python如何处理多个“web工作者”或进程_Javascript_Jquery_Ajax_Django_Pythonanywhere - Fatal编程技术网

Javascript python如何处理多个“web工作者”或进程

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提交到后端。在后端接收到信息后,它使用该信息生成一个DOCX,并将该DOCX文件返回给用户

这是我的HTML文件中的AJAX代码

    $.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保存文件路径。谢谢你的帮助