1
我想使用芹菜的AbortableTask功能,但文檔示例似乎並沒有爲我工作。給出的例子是:Django芹菜AbortableTask用法
from celery.contrib.abortable import AbortableTask
def MyLongRunningTask(AbortableTask):
def run(self, **kwargs):
logger = self.get_logger(**kwargs)
results = []
for x in xrange(100):
# Check after every 5 loops..
if x % 5 == 0: # alternatively, check when some timer is due
if self.is_aborted(**kwargs):
# Respect the aborted status and terminate
# gracefully
logger.warning("Task aborted.")
return None
y = do_something_expensive(x)
results.append(y)
logger.info("Task finished.")
return results
和
from myproject.tasks import MyLongRunningTask
def myview(request):
async_result = MyLongRunningTask.delay()
# async_result is of type AbortableAsyncResult
# After 10 seconds, abort the task
time.sleep(10)
async_result.abort()
...
不過,我得到的錯誤:
TypeError: MyLongRunningTask() takes exactly 1 argument (0 given)
我在做什麼錯?
我給這個一杆(有意義),但錯誤依然存在。我絕對不能把任務稱爲正確的。 – Anon 2010-09-07 17:28:22
我給了這個又一次嘗試,因爲它看起來是對的,現在它可以工作。我假設我只是沒有用任務更新文件。 – Anon 2010-09-08 17:50:19