2

Django と Piston で構築された Web サイトを実行しており、セロリを実装してタスクを外部サーバーにオフロードしたいと考えています。セカンダリ サーバーで Django を実行したくないので、単純に純粋な Python celery ワーカーを実行したいと考えています。Django サーバーで単純な関数スタブを作成し、セカンダリ サーバーで実際の関数ロジックを作成することはできますか?

すなわち

ジャンゴサイド

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 ワーカーを使用している場合は、同じブローカー 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': (..., ),
        }
    }

ただし、ワーカーはセロリ ビート ( -B)で実行する必要があります。

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