【问题标题】:deferred.defer shows PermanentTaskFailure: maximum recursion depth exceededdeferred.defer 显示 PermanentTaskFailure:超出最大递归深度
【发布时间】:2016-12-26 08:06:14
【问题描述】:

我正在尝试从 csv 文件中导入所有数据并将其作为 csv 文件存储到数据存储中。

__init__.py 定义 app 的文件。

@app.route("/import/<model>", methods=['POST'])
def import_csv(model):
    reader = UsersImporter(fil, user)
    reader.read()

importers.py

class UsersImporter(BaseImporter):
    def read(self):
        line = self.file.readline()
        self.checking_delimiter_on_first_line(line)
        self.file.seek(0)
        reader = csv.DictReader(self.file, delimiter=self.delimiter)
        try:
            for row in reader:
                deferred.defer(self.parse_line, row)
        except:
            print traceback.format_exc()
        self.insert_entities()

上面的代码产生下面的回溯。

INFO     2016-12-26 08:00:09,745 deferred.py:303] X-Appengine-Current-Namespace:, X-Appengine-Taskexecutioncount:0, X-Appengine-Country:ZZ, X-Appengine-Taskname:task8, X-Appengine-Taskretrycount:0, X-Appengine-Queuename:default, X-Appengine-Tasketa:1482739209.69
ERROR    2016-12-26 08:00:09,749 deferred.py:319] Permanent failure attempting to execute task
Traceback (most recent call last):
  File "/home/gemini/softwares/google_appengine/google/appengine/ext/deferred/deferred.py", line 310, in post
    self.run_from_request()
  File "/home/gemini/softwares/google_appengine/google/appengine/ext/deferred/deferred.py", line 305, in run_from_request
    run(self.request.body)
  File "/home/gemini/softwares/google_appengine/google/appengine/ext/deferred/deferred.py", line 145, in run
    raise PermanentTaskFailure(e)
PermanentTaskFailure: maximum recursion depth exceeded

你看,row 不是requestHandler 类的实例。还有self.parse_lineBaseImporter中定义的方法。

【问题讨论】:

    标签: python google-app-engine flask


    【解决方案1】:

    在将parse_line 函数移出类之后,它可以工作。即,作为defferred.defer func 的第一个参数传递的函数不会是实例方法。

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 2017-03-24
      • 2011-12-31
      • 2017-08-09
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多