簡體   English   中英

在Celery中使用全局變量:最佳方法是什么?

[英]Using global variables in Celery: What's the best approach?

我使用Django 1.10和Celery編寫應用程序。 我試圖在芹菜中創建一個循環,該循環可以通過Django啟動和停止。

我的想法看起來像這樣(非常簡單):

_run = False

def do_work():
  global _run
  while _run:
    # Do something

@app.task
def start():
  global _run
  _run = True
  do_work()

@app.task
def stop():
  global _run
  _run = False

問題在於,芹菜通常在1個以上的工作線程中運行,並且_run在線程之間不可訪問。

問題:實現該功能的最佳方法是什么? 我正在考慮設置數據庫變量,但恐怕它不是最佳方法。

一種可能的方法是創建將永遠運行的任務,然后根據請求將其停止。

from proj.celery import app
app.control.revoke(task_id)

http://docs.celeryproject.org/en/latest/faq.html#can-i-cancel-the-execution-of-a-task

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM