Celery - How to send task from remote machine?

前端 未结 4 1875
庸人自扰
庸人自扰 2021-01-31 16:42

We have a server running celery workers and a Redis queue. The tasks are defined on that server.
I need to be able to call these tasks from a remote machine.
I know that

相关标签:
4条回答
  • 2021-01-31 17:00

    What you found was right.

    from celery.execute import send_task
    
    send_task('tasks.add')
    

    If any args needed

    send_task('tasks.add', kwargs={'a': 1, 'b': 2})
    
    0 讨论(0)
  • 2021-01-31 17:02

    on the remote machine, start up celery with the broker_url pointing to the machine you want to run the tasks on. Then just submit the tasks (if you have specific queues to submit to, then add the appropriate routing keys).

    0 讨论(0)
  • 2021-01-31 17:07

    There are several ways to define routing rules, the most general of which is the custom router object. In all cases, the caller just provides a routing_key parameter in send_task, delay or apply_async and the router determines which queue to send the task into.

    0 讨论(0)
  • 2021-01-31 17:12

    This may be a way: Creating a Celery object and using send_task from that object, the object can have the configuration to find the broker.

    from celery import Celery
    celery = Celery()
    celery.config_from_object('celeryconfig')
    celery.send_task('tasks.add', (2,2))
    

    celeryconfig is a file containing the celery configuration, there are other ways set config on the celery object.

    0 讨论(0)
提交回复
热议问题