目前,我們使用Celery & RabbitMQ在Ubuntu 14.04服務器上執行可重複的任務,並且一切都很好。 Celery從RMQ中提取任務並執行正確的方法。我們有12名芹菜工人不斷監測RMQ隊列。我們有一個新的要求,我們只想在Celery中執行一次方法,或者每天說一次。這可能嗎?我不想看看其他技術,因爲我們現在投資Celery/RMQ。使用Celery在啓動時執行方法
在此先感謝。
目前,我們使用Celery & RabbitMQ在Ubuntu 14.04服務器上執行可重複的任務,並且一切都很好。 Celery從RMQ中提取任務並執行正確的方法。我們有12名芹菜工人不斷監測RMQ隊列。我們有一個新的要求,我們只想在Celery中執行一次方法,或者每天說一次。這可能嗎?我不想看看其他技術,因爲我們現在投資Celery/RMQ。使用Celery在啓動時執行方法
在此先感謝。
對於每個任務,您可以存儲一個布爾值,該值將跟蹤是否在一天中執行的數據不是,您可以將這些數據存儲在數據庫或某個文件存儲中。 維護每日執行的cron,將每個任務值設置爲false(假定當天任務未執行爲false)。 創建芹菜pre_run信號如果任務是爲其他的日子已經完成,將返回繼續
from django.db import models
class TaskModel(models.Model)
task = models.CharField(max_length=200)
is_executed = models.BooleanField(default=False)
from celery.signals import task_prerun
@task_prerun.connect()
def task_setup(signal=None, sender=None, task_id=None, task=None, args=None, kwargs=None):
# this method executes before every celery task
task_obj = TaskModel.objects.get(task=task.name)
if task_obj.is_executed:
return
如果我要存儲一個獨特的價值每天的每個工作人員,我如何用Redis作爲db來做到這一點?由於有多名芹菜工人,我想將他們的鑰匙/ ID和價值一起存儲在Redis中。這樣,就有了一對一的匹配,並且不會共享值。 – NetRocks