2014-12-12 9 views
7

Pymongo Sammlung Objekt schlägt fehl, wenn ich versuche, meine Aufgaben mit Sellerie zu führen. Ich denke, es konnte es nicht serialisieren. Was soll ich machen? Übrigens habe ich Pickle probiert, aber es hilft mir nicht.Pymongo Sammlung Objekt Serialisierung __getnegargs__ Methode

PS: Ich möchte nicht globalen DB-Import zu diesem Modul machen.

Objekt 'Sammlung' kann nicht aufgerufen werden. Wenn Sie die Methode 'getneargs' anrufen möchten ...

Beispielcode ist unten. module.py

from celery.contrib.methods import task_method 



class Some_Class(object): 
    """docstring for Some_Class""" 
    def __init__(self, db): 
     super(Some_Class, self).__init__() 
     self.db = db # This object causes 'Collection' object is not callable 
     #db is a pymongo collection object from db.py 


    @app.task(filter=task_method) # Celery task 
    def add(self): 
     """ 
     db.insert({'some_key':'some_value'}) 
     """ 
     return 3 

db.py

from pymongo import MongoClient  
db = MongoClient()['test']['collection'] 
+0

Wenn Sie untersuchen möchten, was zu Fehlern in der Serialisierbarkeit von Objekten führt, können Sie Methoden im Modul 'dill.detect' ausprobieren. https://github.com/uqfoundation –

Antwort

0

Sie auf einem Windows-Rechner diesen Code Laufen? Möglicherweise liegt ein zugrunde liegendes Problem mit der Verzweigung vor, da "fork" unter Windows nicht existiert. Daher ist das Objekt möglicherweise nicht auswählbar, wodurch ein Fehler verursacht wird.

+0

Nein ich benutze keine Windows. Und das muss ein Kommentar sein, es ist keine Antwort, denke ich. – fatihsucu