私はpython 2.7とdjango 1.27を使用しています。タスクにはセロリを使用しています。
私はこのビューを持っています
def my_view(request):
do_stuff()
local_1 = 1
local_2 = 4
celery_delayed_task(locals())
return HttpResponse('OK')
これにより、この例外が発生しました
locals() を渡すと失敗します: getstateを定義せずにスロットを定義するクラスはピクルできません
ビューが存在しなくなったときにタスクが呼び出されるため、 locals() 辞書のコピーを作成する必要があると思いました。
私は代わりにこれを試します:
def my_view(request):
do_stuff()
local_1 = 1
local_2 = 4
locals_dict = copy.deepcopy(locals())
celery_delayed_task(locals_dict)
return HttpResponse('OK')
そして今、私はこのエラーを受け取りました:
オブジェクトのディープコピーが失敗しました: object. new (cStringIO.StringO) は安全ではありません。cStringIO.StringO を使用してください。新しい()
明らかに私はそれを間違っています、何か考えはありますか?