0

データベーステーブルにデータを書き込む関数でセロリを使用しています。

django-mutantを使用して動的に作成するため、このテーブルには models.py 内に関連モデルがありません。

タスクを実行すると、動的テーブルに正しく書き込まれますが、タスクの最後に次のエラーが発生します。

[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

セロリが検索しているモデルは、 tss1_tmpという名前のアプリには保存されていませんが、ミュータントアプリ テーブル内に保存されています。

私の問題は、この関数をサブタスクとして別のサブタスクにチェーンすると、セロリが最初のサブタスクの最後にこのエラーで終了することです!

このモデルの場所をセロリに伝える方法、またはこのエラーをスキップして次のサブタスクに進む方法はありますか?

前もって感謝します。

編集:現時点では、5 つの不変サブタスクを使用して、5 つの関数をチェーンで実行できます。それらは正しく機能し、動的テーブルを正しく埋めますが、最初のものと最初のものだけが説明されているエラーを生成し続けます...彼らが同じ方法で動的モデル?

4

1 に答える 1

0

私は解決しました:それは私の最初の関数内の問題でした.実行の最後に動的モデルのオブジェクトを返していたため、セロリ/ジャンゴミュータントが混乱しました. このオブジェクトはまったく役に立たなかったため、そのリターンを削除することで問題が解決しました。皆さん、ありがとうございます。

于 2013-07-11T13:57:19.707 に答える