我想能夠決定我是否應該在運行時synchroniuosly或asynchroniusly執行功能,所以我寫了下面的代碼:決定是否使用芹菜或在運行時不會
class DefaultUseCeleryPolicy(UseCeleryPolicy):
def use(self):
return anyCeleryWorkerRunning() or FORCE_CELERY
#--------------------------------------------------------------------------------------
class TaskDispatcher(object):
def __init__(self, usePolicy):
self.usePolicy = usePolicy
def dispatch(self, function, *args, **kwargs):
pass
#--------------------------------------------------------------------------------------
class CeleryTaskDispatcher(TaskDispatcher):
def __init__(self, usePolicy = DefaultUseCeleryPolicy()):
super(CeleryTaskDispatcher, self).__init__(usePolicy)
def dispatch(self, function, *args, **kwargs):
if self.usePolicy.use():
t = task(function)
tasks.register(t)
t.delay(args, kwargs)
else:
function(args, kwargs)
不幸的是,這並不工作(我正在收到「芹菜工人收到未註冊類型錯誤的任務」)。是否有可能實現我想要的?
完全回溯可能會有所幫助。 –
當然:http://pastebin.com/nC1T0MAx – mnowotka