在使用decorator执行之前在python中pickle对象
我试图构建一个装饰器,它可以在执行之前在以后使用它来pickle任何函数,但是我得到了以下错误在使用decorator执行之前在python中pickle对象,python,pickle,Python,Pickle,我试图构建一个装饰器,它可以在执行之前在以后使用它来pickle任何函数,但是我得到了以下错误 PicklingError at / Can't pickle <function wow at 0x105ff9488>: it's not the same object as apps.sandbox_app.tasks.wow 这是装修工的登记表 from dj_cron.task import register @register def wow(): x = 2
PicklingError at /
Can't pickle <function wow at 0x105ff9488>: it's not the same object as apps.sandbox_app.tasks.wow
这是装修工的登记表
from dj_cron.task import register
@register
def wow():
x = 2 * 3
return x
函数wow的实际调用如下
呼叫.py
wow()
有什么办法可以解决这个问题吗 我不知道为什么酸洗不起作用,但您的装饰程序从未实际调用该函数,并返回另一个函数,因此
wow
中的代码将不会运行。如果我将此返回存储区任务任务任务模型(func)替换为返回存储区任务任务模型(func()),则上述代码将起作用但这意味着存储的pickle将是我不想要的可执行对象。为什么需要pickle函数呢?通常该函数是可用的,因为无论在何处取消拾取对象,都会运行相同的代码。您真正需要做什么?我正在基于HTTP请求服务构建一个调度程序(通过该服务,您发出回拨请求,它会回拨特定的url)。我想这样做的方法是,为使用此代码的任何人提供一个装饰器,让他们可以将其包装在自己的函数中,然后装饰器将在数据库中存储经过pickle处理的函数,用服务安排回调,HTTP请求终止,并等待回调。这是为了模拟类似于cron作业的行为,或者更准确地模拟排队行为存储编译的字节码不是更好吗?
wow()