Arc*_*ain 5 python celery celery-task django-celery
Celery 似乎是一个很棒的工具,但我很难理解各个 Celery 组件如何协同工作:
据我了解,命令行:
celery -A not-clear-what-this-option-is worker
Run Code Online (Sandbox Code Playgroud)
应该运行某种芹菜“工作服务器”,它本身需要连接到代理服务器(我不太确定为什么需要这么多服务器)。
然后在任何 python 代码中,可以通过实例化应用程序将某些任务发送给工作人员:
app = Celery('my_module', broker='pyamqp://guest@localhost//')
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式使用此应用程序装饰函数:
@app.tasks
def my_func():
...
Run Code Online (Sandbox Code Playgroud)
这样“my_func()”现在可以被称为“my_func.delay()”以异步方式运行。
这是我的问题:
如果有人有关于这些问题的一些信息,我将不胜感激。我打算在 Django 项目中使用 Celery,其中对服务器的一些请求可以触发各种耗时的任务,和/或查询先前启动的任务的状态(待处理、已完成、错误等)。
关于经纪人:
经纪人的主要作用是调解客户和工人之间的沟通
基本上,当您的工作线程运行时,正在生成和处理大量信息
处理这些信息是经纪人的职责
例如,您可以配置redis,以便在运行进程时服务器关闭时不会丢失任何信息
工人:
您可以将工作人员视为独立于您的应用程序的实例,它只会执行您委托给它的那些任务
关于任务的状态:
有多种方法可以咨询 celery 来找出任务的状态,但我不建议根据此构建应用程序逻辑
如果您想使用任务获取一个进程的输出并将其转入另一个进程的输入,我建议您使用队列
命令:
在终端上,您可以通过运行celery -h或更详细地查看每个参数的含义celery --help
但参数基本上指定了您打算运行哪个 celery 实例。所以通常这个参数将指示在哪里可以找到您已配置并打算执行的实例
usage: celery [-h] [-A APP] [-b BROKER] [--result-backend RESULT_BACKEND]
[--loader LOADER] [--config CONFIG] [--workdir WORKDIR]
[--no-color] [--quiet]
Run Code Online (Sandbox Code Playgroud)
我希望这能为那些到达这里的人提供一个初步的概述
| 归档时间: |
|
| 查看次数: |
1718 次 |
| 最近记录: |