处理WSGI脚本时发生异常 - IOError:无法写入数据

6

我正在尝试在服务器端保存一张图片。我先将它作为base64字符串接收,然后进行解码并保存到数据库中。但是这个过程失败了,所以我查看了服务器错误日志,发现了以下错误:

error.log

    [Tue May 21 14:26:38 2013] [error] [client 41.236.182.133] mod_wsgi (pid=4952): Exception occurred processing WSGI script '/root/AR_BROWSER/example/wsgi.py'.
[Tue May 21 14:26:38 2013] [error] [client 41.236.182.133] IOError: failed to write data

我检查了 wsgi.py 文件

import os
import sys

path = '/root/AR_BROWSER/example'

sys.path.append('/root/AR_BROWSER/example')
sys.path.append('/root/AR_BROWSER')
sys.path.append('/root/AR_BROWSER/example/app')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

但我找不到任何问题。你有什么想法是什么原因导致了这个问题?!负责保存图片的代码如下:

 @csrf_exempt    
    def create_app(request):
        appName = request.POST['name']
        user = request.POST['userID']
        c = request.POST['category']
        i = request.POST['image']
        imgdata = base64.b64decode(i)
        t = datetime.now()
        filename = t.strftime('test.jpg')  
        with open(filename, 'w') as f:
            f.write(imgdata)
            f.close()
        u=App_User.objects.get(id=user)
        apps = App.objects.create(name = appName, category=c, user_id = u.id, app_logo=File(filename))
        apps.save()

        return HttpResponse("You created %s." % apps.name)

检查权限(对于Apache用户)和检查磁盘空间。 - Muayyad Alsadi
使用chmod 777检查了权限,而图片大小仅为25kb,所以我认为这不是问题。 - omarsafwany
请问您能否展示保存图像的实际代码? - alecxe
added it in the question. - omarsafwany
1个回答

7

如果mod_wsgi返回的消息中没有追踪信息,通常意味着HTTP客户端在mod_wsgi将所有响应数据写回到客户端之前关闭了连接。


那么可能的解决方案是什么? - Jenna Kwon
这个问题没有解决方案。这是一个正常的事情,可能会发生。在页面完全返回之前,您无法阻止用户浏览到其他页面。而且,当客户端运行在移动设备上时,网络问题可能导致连接中断,这是相当普遍的,您也无法对此进行保护。 - Graham Dumpleton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接