哪种方法调用芹菜中的子任务更好?分组、延迟每个项目或使用回调?

2024-04-19 01:16:54 发布

您现在位置:Python中文网/ 问答频道 /正文

python 3.5版 芹菜4.0.2 兔子MQ 3.6.10

我也在尝试爬升一些数据,但我不知道哪种方式更合适。你知道吗

数据的结构就像一个表,我需要为每一行推送子任务。你知道吗

这是我用过的

  • 延迟每个项目:

    @app.task
    def task():
        for row in table:
            subtask.delay(row)
    
    @app.task
    def subtask(item):
        dosomething(item)
    
  • 使用组

    @app.task
    def task():
        rows=[]
        for row in table:
            rows.append(row)
        group(subtask.s(row) for row in rows)()
    
    @app.task
    def subtask(item):
        dosomething(item)
    
  • 使用组和产量

    def _task():
        for row in table:
            yield subtask(row).s()
    
    @app.task
    def task():
        group(_task())()
    
    @app.task
    def subtask(item):
        dosomething(item)
    

这只是一个演示我的问题,我做了一些测试这些代码。第三条路看起来更好。你知道吗

你选择哪条路

有什么建议吗


Tags: 数据inappfortaskdeftablegroup