1

我正在尝试构建一个装饰器,以后可以在执行之前使用它来腌制任何函数,但出现以下错误

PicklingError at /

Can't pickle <function wow at 0x105ff9488>: it's not the same object as apps.sandbox_app.tasks.wow

这是我的装饰师

# -*- coding: utf-8 -*-
import base64
import pickle
from models import Task
from functools import wraps


def register(func):
    """ Decorate a function to print its arguments.
    """
    @wraps(func)
    def executable(*args, **kwargs):
        return store_task_to_model(func)

    def store_task_to_model(x):
        Task.objects.create(
            task = base64.b64encode(pickle.dumps(x)),
            status = 'P'
        ).save()

    return executable

这是装饰师注册

from dj_cron.task import register

@register
def wow():
    x = 2 * 3
    return x

和函数的实际调用哇如下

调用.py

wow()

任何想法我该如何解决这个问题?

4

0 回答 0