首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Celerybeat执行任务

Celerybeat执行任务
EN

Stack Overflow用户
提问于 2015-07-29 22:33:33
回答 1查看 3K关注 0票数 2

我有个芹菜任务:

代码语言:javascript
复制
@app.task(ignore_result=True)
def update_task():
    ....

我将此任务添加到设置中的celerybeat:

代码语言:javascript
复制
CELERYBEAT_SCHEDULE = {
    "update-task-on-mathmod.org": {
        "task": "manager.update_task",
        "schedule": timedelta(seconds=30),
    }
}

我的项目结构:

设置在settings.py中,任务定义在application.py中。如何启动周期性任务?

我运行celery beat -A application。输出:

代码语言:javascript
复制
celery beat v3.1.18 (Cipater) is starting.
__    -    ... __   -        _
Configuration ->
    . broker -> amqp://guest:**@localhost:5672//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> celery.beat.PersistentScheduler
    . db -> celerybeat-schedule
    . logfile -> [stderr]@%DEBUG
    . maxinterval -> now (0s)
[2015-07-30 11:27:16,470: DEBUG/MainProcess] Setting default socket timeout to 30
[2015-07-30 11:27:16,470: INFO/MainProcess] beat: Starting...
[2015-07-30 11:27:16,482: DEBUG/MainProcess] Current schedule:
<Entry: celery.backend_cleanup celery.backend_cleanup() <crontab: 0 4 * * * (m/h/d/dM/MY)>
[2015-07-30 11:27:16,483: DEBUG/MainProcess] beat: Ticking with max interval->5.00 minutes
[2015-07-30 11:27:16,495: DEBUG/MainProcess] Start from server, version: 0.9, properties: {u'information': u'Licensed under the MPL.  See http://www.rabbitmq.com/', u'product': u'RabbitMQ', u'copyright': u'Copyright (C) 2007-2013 GoPivotal, Inc.', u'capabilities': {u'exchange_exchange_bindings': True, u'connection.blocked': True, u'authentication_failure_close': True, u'basic.nack': True, u'consumer_priorities': True, u'consumer_cancel_notify': True, u'publisher_confirms': True}, u'platform': u'Erlang/OTP', u'version': u'3.2.4'}, mechanisms: [u'AMQPLAIN', u'PLAIN'], locales: [u'en_US']
[2015-07-30 11:27:16,497: DEBUG/MainProcess] Open OK!
[2015-07-30 11:27:16,498: DEBUG/MainProcess] beat: Waking up in 5.00 minutes
EN

回答 1

Stack Overflow用户

发布于 2015-07-30 05:48:22

为了处理“预定”的任务,你需要像@user2097159所说的那样运行"celery beat“。

代码语言:javascript
复制
celery -A <project> beat -l debug

要运行普通任务(异步执行的任务)的工作进程,您需要启动一个工作进程

代码语言:javascript
复制
celery -A <project> worker -l debug

-l meas日志级别等于debug,有利于开发。一个不错的做法是让celery来设置任务名称,而不是设置name="something“。当worker运行时,它将显示一条消息,其中包含已注册的任务,请确保您的任务已由celery注册。一旦你的任务被发送给工人或节拍,你就会在它的控制台中看到一个日志条目。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31703541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档