Я использую сельдерей с функцией, которая записывает данные в таблицу базы данных.Ошибка отбора сельдерея с динамическими моделями
Эта таблица не имеет родственной модели внутри models.py, потому что я создаю ее динамически, используя django-mutant.
Когда я запускаю свою задачу, он правильно пишет о моей динамической таблице, но в самом конце задачи я получаю следующее сообщение об ошибке:
[2013-07-10 09:10:45,707: CRITICAL/MainProcess] Task topology_py.Functions.Functions.objectAggregate[aff70510-1e93-4610-b08c-c3675c92afe9] INTERNAL ERROR: PicklingError("Can't pickle <class 'mutant.apps.tss.models.1_tmp'>: import of module mutant.apps.tss.models failed",)
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/celery/task/trace.py", line 261, in trace_task
for callback in task_request.callbacks or []]
File "/usr/lib/python2.7/site-packages/celery/canvas.py", line 197, in apply_async
return self._apply_async(args, kwargs, **options)
File "/usr/lib/python2.7/site-packages/celery/app/task.py", line 472, in apply_async
**options)
File "/usr/lib/python2.7/site-packages/celery/app/amqp.py", line 249, in publish_task
**kwargs
File "/usr/lib/python2.7/site-packages/kombu/messaging.py", line 157, in publish
compression, headers)
File "/usr/lib/python2.7/site-packages/kombu/messaging.py", line 233, in _prepare
body) = encode(body, serializer=serializer)
File "/usr/lib/python2.7/site-packages/kombu/serialization.py", line 170, in encode
payload = encoder(data)
File "/usr/lib/python2.7/site-packages/kombu/serialization.py", line 356, in dumps
return dumper(obj, protocol=pickle_protocol)
PicklingError: Can't pickle <class 'mutant.apps.tss.models.1_tmp'>: import of module mutant.apps.tss.models failed
модели, которая сельдерей ищет, 1_tmp
не сохраненный в моем приложении, названный tss, но внутри мутант таблицы приложений.
Моя проблема заключается в том, что если я привяжу эту функцию как подзадачу к другой подзадаче, сельдерей заканчивается этой ошибкой в конце первого!
Есть ли способ рассказать сельдерей, где найти эту модель или вообще пропустить эту ошибку и перейти к следующим подзадачам?
Заранее спасибо.
EDIT: В настоящий момент я могу запустить даже 5 функций в цепочке, используя 5 неизменных подзадач. Они работают правильно и правильно заполняют динамическую таблицу, но первая, и только первая, продолжают создавать описанную ошибку ... Можете ли вы дать мне и понять, почему только первый из них дает мне ошибку, так как они получают доступ к динамическая модель одинаковым образом?
Итак, создаете ли вы эту динамически созданную связанную модель внутри задачи? – rednaw
Нет, я динамически создаю модель раньше, и после этого я заполняю ее задачей. Задача сельдерея выполняет только sql-вставки ... – caneta
Задачи сельдерея выполняются в отдельном процессе. Если вы динамически создали родственную модель, тогда запустите задачу Сельделия, задача не будет иметь эту динамически создаваемую связанную модель. Зачем вам все эти динамически созданные связанные модели? – rednaw