相关疑难解决方法(0)

芹菜自动重新加载任何变化

我可以做芹菜自动重新加载本身时,有在模块的变化CELERY_IMPORTSsettings.py.

我试图让母模块检测甚至在子模块上的变化,但它没有检测到子模块的变化.这让我明白芹菜不能递归检测.我在文档中搜索了它,但我没有遇到任何对我的问题的回应.

在我的项目中添加与celery相关的所有内容CELERY_IMPORTS以检测更改时,我真的很烦.

有没有办法告诉芹菜"当项目的任何地方有任何变化时自动重新加载".

谢谢!

python celery django-celery

19
推荐指数
3
解决办法
1万
查看次数

使用Flask动态安排Celery Beat任务

我希望能够让我的应用程序的用户启动/停止Celery beat定期的crontab样式任务.现在我用Celery运行

venv/bin/celery worker -A celery_worker.celery --loglevel=info
Run Code Online (Sandbox Code Playgroud)

我用这个简单的例子运行了Celery Beat:

@celery.task
def add(x, y):
    return x + y
Run Code Online (Sandbox Code Playgroud)

在我的配置文件中:

CELERYBEAT_SCHEDULE = {
    'add-every-30-seconds': {
        'task': 'app.email.add',
        'schedule': timedelta(seconds=30),
        'args': (16, 16)
    },
}
CELERY_TIMEZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)

然后我用Celery击败了Celery

celery -A celery_worker.celery beat -s ~/Documents/cesco-automation/power/celerybeat-schedule
Run Code Online (Sandbox Code Playgroud)

而且效果很好!但我需要更多地控制时间表.

同样在我的app shell上,我能够做到这一点.

>>>add.apply_async([80,800],countdown=30)

>>> from datetime import datetime, timedelta     
>>> tomorrow = datetime.now() + timedelta(days=1)
>>> add.apply_async(args=[10, 10], eta=tomorrow)
Run Code Online (Sandbox Code Playgroud)

这很棒,但我正在开发一个家庭自动化应用程序,所以我还需要停止任务.我该怎么做呢??

我还发现这个链接提及有关Django的自定义调度类.这正是我需要的.在Celery文档中,它提到了-S标志,但我不知道如何正确地将类添加到我的Flask应用程序中.我怎样才能和Flask一起使用?

我真的需要Celery Beat吗?除了crontab还有其他选择吗?Crontab似乎不够锐利.

django celery flask python-2.7 celerybeat

8
推荐指数
1
解决办法
3875
查看次数

标签 统计

celery ×2

celerybeat ×1

django ×1

django-celery ×1

flask ×1

python ×1

python-2.7 ×1