2016-12-26 7 views
0

Я пытаюсь импортировать все данные из файла CSV и хранить его в хранилище как CSV файл ..deferred.defer показывает PermanentTaskFailure: максимальная глубина рекурсии превысила

__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_line - это метод, определенный в BaseImporter.

ответ

0

Это работает, после перемещения parse_line функция вне класса. т.е. функция, переданная в качестве первого аргумента defferred.defer func, не будет методом экземпляра.

Смежные вопросы