2014-12-12 8 views
7

L'oggetto di raccolta Pymongo non riesce quando cerco di eseguire i miei compiti con il sedano. Immagino che non possa serializzarlo. Cosa dovrei fare? Dal modo in cui ho provato sottaceto, ma non mi aiuta.oggetto di raccolta pymongo serializzazione del metodo __getnewargs__

PS: Non voglio importare il db globale in questo modulo.

L'oggetto "Raccolta" non è richiamabile. Se intendevi chiamare il metodo "getnewargs" ....

Il codice di esempio è riportato di seguito. 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

Se si sta esaminando cosa porta a un errore nella serializzabilità degli oggetti, è possibile provare i metodi nel modulo 'dill.detect'. https://github.com/uqfoundation –

risposta

0

State facendo funzionare questo codice su una macchina Windows? Potrebbe esserci un problema di fork sottostante poiché 'fork' non esiste su Windows, quindi l'oggetto potrebbe non essere selezionabile e causare un errore.

+0

No, non sto usando Windows. E questo deve essere un commento, non è una risposta, penso. – fatihsucu

Problemi correlati