我試圖找到一種方法,可以從django管理員打開/關閉芹菜任務。這主要是爲了禁用在這些服務關閉或具有計劃的維護期時調用外部服務的任務。關掉芹菜任務
對於我的定期任務,這很容易,尤其是在django-celery中。但對於按需調用的任務,我遇到了一些麻煩。目前,我正在探索在TaskControl模型中存儲各種任務的開/關狀態,然後只在任務執行開始時檢查該狀態,如果狀態爲False則返回None。這讓我感覺很髒,因爲每次任務開始時都會有額外的db查詢。我可以使用不是數據庫的緩存後端,但爲這些少數鍵/值對添加緩存似乎有點矯枉過正。
在models.py
# this is a singleton model. singleton code bits omitted for brevity.
class TaskControl(models.Model):
some_status = models.BooleanField(default=True)
# more statuses
在tasks.py
@celery.task(ignore_result=True)
def some_task():
task_control = TaskControl.objects.get(pk=1)
if not task_control.some_status:
return None
# otherwise execute task as normal
什麼是更好的方式來做到這一點?
與數字1在一起。性能命中最小,實現也很簡單。感謝您的建議! – ecline6 2014-09-13 23:58:42