Python webapp2-只读文件系统错误

Python webapp2-只读文件系统错误,python,google-app-engine,jinja2,webapp2,Python,Google App Engine,Jinja2,Webapp2,我正在使用Python(webapp2)和Jinja2开发一个googleappengine应用程序,并试图使用库创建一个PDF文件 例如: from reportlab.pdfgen import canvas class pdf(webapp2.RequestHandler): def get(self): x = 50 y = 750 c = canvas.Canvas("file.pdf") c.drawString(x*5,y,"Output")

我正在使用Python(webapp2)和Jinja2开发一个googleappengine应用程序,并试图使用库创建一个PDF文件

例如:

from reportlab.pdfgen import canvas

class pdf(webapp2.RequestHandler):
  def get(self):
    x = 50
    y = 750
    c = canvas.Canvas("file.pdf")
    c.drawString(x*5,y,"Output")
    c.line(x,y-10,x*11,y-10)
    c.save()
运行服务器时,出现以下错误:

raise IOError(errno.EROFS, 'Read-only file system', filename)
IOError: [Errno 30] Read-only file system: u'file.pdf'

您不能写入appengine文件系统——毕竟,由于您有多台机器(并且您不能一直看到相同的机器),您将写入哪台机器的文件系统

但是,reportlab画布似乎接受打开的文件对象。我不能保证这会起作用,但您可以尝试传递一个类似对象的打开文件。e、 甚至
webapp2.Response.out

import io
class pdf(webapp2.RequestHandler):
  def get(self):
    x = 50
    y = 750
    c = canvas.Canvas(self.response.out)
    c.drawString(x*5,y,"Output")
    c.line(x,y-10,x*11,y-10)
    c.save()

您不能写入appengine文件系统——毕竟,由于您有多台机器(并且您不能一直看到相同的机器),您将写入哪台机器的文件系统

但是,reportlab画布似乎接受打开的文件对象。我不能保证这会起作用,但您可以尝试传递一个类似对象的打开文件。e、 甚至
webapp2.Response.out

import io
class pdf(webapp2.RequestHandler):
  def get(self):
    x = 50
    y = 750
    c = canvas.Canvas(self.response.out)
    c.drawString(x*5,y,"Output")
    c.line(x,y-10,x*11,y-10)
    c.save()
我使用以下方法使其工作:

我使用以下方法使其工作:


嗯。。。对不起,我指的是
webapp2.Response
对象,而不是
webapp2.Request
对象……无论如何,这是正确的方法,即使您可以写入文件系统。否则,如果您同时有多个PDF请求,会发生什么情况呢。。。对不起,我指的是
webapp2.Response
对象,而不是
webapp2.Request
对象……无论如何,这是正确的方法,即使您可以写入文件系统。否则,如果您同时有多个PDF请求,会发生什么情况?