2012-05-15 78 views

回答

3

如果你真的需要要做到這一點,你需要迅速的解決方案,你可以採取增加: 睡眠 到腳本。 (很明顯,您需要爲您的腳本添加一個參數,將睡眠時間設置爲0或30秒,然後將腳本兩次添加到crontab,一次以0作爲參數,其次爲30)。

請不要對此投票!這是一個解決方案,雖然我很清楚這不是一個理想的解決方案。

+0

感謝您的建議! – snakesNbronies

7

Very first example they have in the documentation is ...

例:運行tasks.add任務每30秒。

from datetime import timedelta 

CELERYBEAT_SCHEDULE = { 
    "runs-every-30-seconds": { 
     "task": "tasks.add", 
     "schedule": timedelta(seconds=30), 
     "args": (16, 16) 
    }, 
} 
+1

我需要它每30秒運行**在特定的時間**。我也遇到了他們在documentation_中的第一個例子。 – snakesNbronies

+0

@thong:你在 – vartec

+0

這個問題上沒有說得很清楚,我也在尋找解決方案(並且遇到了這篇文章)。如果timedelta可以與w/crontab結合,會非常好。 – brizz

1

我會另外安排任務,使你的替代解決方案去/禁用的首要任務:

# tasks.py 
from djcelery.models import PeriodicTask 

@app.task 
def toggle_thirty_second_task: 
    # you would use whatever you named your task below 
    thirty_second_tasks = PeriodicTask.objects.filter(name='runs-every-30-seconds') 
    if thirty_second_tasks: 
     # this returned an array, so we'll want to look at the first object 
     thirty_second_task = thirty_second_tasks[0] 
     # toggle the enabled value 
     thirty_second_task.enabled = not thirty_second_task.enabled 
     thirty_second_task.save() 

然後,只需安排使用你所需要的時間一個crontab這個任務切換。或者,您可以安排一項任務打開它,一個關閉它,而不處理切換邏輯。

希望這會有所幫助。

sc

相關問題