2

我们正在运行一个用 Django 和 Piston 构建的网站,我想实现 celery 将任务卸载到外部服务器。我真的不想在辅助服务器上运行 Django,而只想运行一个纯 Python celery worker。我是否可以在 Django 服务器上编写简单的函数存根并在辅助服务器上编写实际的函数逻辑?

IE

姜戈侧

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
4

2 回答 2

7

这很容易实现。

如果你有一个纯 python Celery worker,你可以通过名称发送任务,只要你使用相同的代理 URL:

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

然后在某些方面:

 celery.send_task('send_message', kwargs={
     'fromUser': ...,
 })
于 2012-10-17T11:22:46.813 回答
0

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

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

但是您的工作人员必须使用 celery beat ( -B) 运行:

celery -A app.tasks worker -B -l info
于 2015-02-22T20:23:27.013 回答