混合django芹菜和独立芹菜

时间:2012-10-16 18:19:12

标签: django celery

我们正在运行一个使用Django和Piston构建的网站,我想实施芹菜来将任务卸载到外部服务器。我真的不想在辅助服务器上运行Django,而只想运行纯Python的芹菜工作者。我可以在Django服务器上编写简单的函数存根,并在辅助服务器上编写实际的函数逻辑吗?

Django Side

from celery import task

@task
send_message(fromUser=None, toUser=None, msgType=None, msg=None):
    pass

服务器端

from celery import Celery
celery =  Celery('hello', broker='amqp://guest@localhost//')
@celery.task
send_message(fromUser=None, toUser=None, msgType=None, msg=None):
    # Do send_message logic here

2 个答案:

答案 0 :(得分:5)

这很容易实现。

如果你有一个纯python Celery工作者,你可以按名称发送任务 只要您使用相同的代理URL:

from celery import Celery
celery = Celery(broker='amqp://guest@localhost//')

然后在某些观点中:

 celery.send_task('send_message', kwargs={
     'fromUser': ...,
 })

答案 1 :(得分:0)

您还可以使用CELERYBEAT_SCHEDULE安排配置任务:

CELERYBEAT_SCHEDULE = {
        'scheduled_task':{
            'task':'name in your task decorator',
            'schedule': timedelta(...),
            'args': (..., ),
        }
    }

但是你的工作人员必须使用芹菜节拍(-B):

celery -A app.tasks worker -B -l info