使用类方法作为 celery 任务

2024-04-26

我正在尝试使用类的方法作为 django-celery 任务,并使用 @task 装饰器对其进行标记。描述了同样的情况here https://stackoverflow.com/questions/8846489/celery-python-object-methods”,阿南德·杰亚哈尔问道。 是这样的

class A:
    @task
    def foo(self, bar):
        ...

def main():
    a = A()
    ...
    # what i need
    a.foo.delay(bar) # executes as celery task 
    a.foo(bar) # executes locally

问题是即使我使用这样的类实例a.foo.delay(bar)它说,那foo至少需要两个参数,这意味着self指针未命中。

更多信息:

  • 我无法将类转换为module因为继承
  • 方法强烈依赖于类成员,所以我无法创建它们static
  • Marking class因为带有 @task 装饰器的任务使该类本身成为一个任务,并且可以执行以下方法run()方法,使用一些参数作为方法选择的关键,但这并不完全是我想要的。
  • 创建类的实例并将其传递为self方法的参数改变了我执行方法的方式not与芹菜一样,但与通常的方法一样(即在测试时)
  • 我试图找出如何动态注册任务,例如从构造函数,但芹菜在工作人员之间共享代码,所以这就是为什么它似乎是不可能的。

感谢您的帮助!


Celery 从 3.0 版本开始实验性地支持使用方法作为任务。

这方面的文档位于celery.contrib.methods,并还提到了一些您应该注意的注意事项:

https://docs.celeryproject.org/en/3.1/reference/celery.contrib.methods.html https://docs.celeryproject.org/en/3.1/reference/celery.contrib.methods.html

Be aware: 支持contrib.methods从芹菜中删除从4.0开始

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用类方法作为 celery 任务 的相关文章

随机推荐

  • 如何在Python中从声音中获取Pi-Phase以获得相消干涉

    第一 我不知道该把这个话题放在哪里 因为它是一个编程和声音问题 如果有错误的地方请评论 但这是我的问题 如何将声音加载到 Python 中并创建它的 反向声音 因此 当我播放原始文件和 pi 偏移 文件时 它们会产生破坏性干扰并相互抵消 因
  • Erlang 如何并发处理访问邮箱

    关于如何使用erlang邮箱的信息有很多 但很少找到一篇论文或文档描述erlang如何在VM内部同时实际访问邮箱 据我了解 Erlang VM 必须执行锁定或 CAS 操作以确保消息完整性 erlang幕后有没有什么精巧的方法 我假设您所说
  • Linux C 如何打开目录并获取文件描述符

    include
  • 南迁:“数据库后端不接受0作为AutoField的值”(mysql)

    我是 django 的新手 并试图将外键返回给受让人和记者的用户 但是当我尝试对 South 应用更改时 我收到错误 ValueError The database backend does not accept 0 as a value
  • 如何限制 Glassfish v3 上 MDB 池的大小

    我的消息驱动 Bean 执行高度密集的操作 因此我想限制它的池大小 否则我的服务器会过载 我已经尝试过这个 代码 但它不起作用 它的池仍然是32 根据经验测试 我不时重新启动服务器 因此没有池实例 MessageDriven mappedN
  • 查找通过付费渠道的消息数量

    按照这个page https azure microsoft com en gb pricing details bot service 网络聊天和直线电话被视为优质渠道 我想知道以下事情 在哪里可以找到通过付费渠道传达的付费消息数量 我知
  • React Bootstrap 没有设计我的 React 组件的样式

    昨天刚开始使用 React 因此设置了一个演示应用程序 环境是 打字稿 Webpack 反应和反应 DOM 我正在尝试设置 Bootstrap 样式 我按照本教程进行操作 但对其进行了修改以适应 Typescript https mediu
  • 用 SED 或 PERL 单行匹配并替换多个换行符

    我有一个输入 C 文件 myfile c 如下所示 void func foo void func bar supercrazytag 我想使用 shell 命令插入新的函数原型 这样输出就变成 void func foo void fun
  • Axios 和 VueJS,函数(响应)未设置列表

    我有一个请求获取一些数据并将其添加到变量中 当我使用时 then function response this persons response data 它不分配response data to this persons但是当我执行以下操
  • 如何从 VB.NET 中的存储过程获取返回值

    我在 SQL Server 中有一个存储过程用于生成事务号 任何人都可以帮助我如何从 VB NET 调用存储过程以及如何获取从过程返回到前端的值 问候 乔治 我想你想要这样的东西 Public Sub Foo Using sql As Ne
  • 为什么从 Dropzone.js 发送时 IFormFile 集合为空?

    我正在尝试使用Dropzone js http www dropzonejs com 将 IFormFile 图像 集合发送到以下 ASP NET Core 2 1 Api 控制器操作 HttpPost action public asyn
  • 如何使用 word2vec 找到与向量最接近的单词

    我刚刚开始使用 Word2vec 我想知道如何找到最接近向量的单词 我有这个向量 它是一组向量的平均向量 array 0 00449447 0 00310097 0 02421786 dtype float32 有没有一种直接的方法可以在我
  • 如何处理 ember.js 组件中的自定义事件?

    我是 Ember js 的新手 在理解其原理时遇到了一些问题 我知道行动向上 数据向下但在现实生活中 假设我有Fotorama http fotorama io 在 my gallery 组件中初始化 我不知道这是否可以 但我是在didIn
  • EditText请求焦点

    我正在设计一个登录页面 UserName Password LoginButton 当活动开始时 我希望焦点转到 用户名 文本框并显示键盘 我正在使用以下代码 boolean checkFocus user requestFocus Log
  • 从数据框中删除所有非唯一行

    抱歉 这是我的第二篇文章 如果有什么不明白的地方请告诉我 我正在尝试删除所有有重复项的行 我已经尝试过keep False参数为drop duplicates 它只是没有做正确的事情 假设我的数据框看起来像这样 ORDER ID ITEM
  • 将带有 UIElement 的 FlowDocument 导出为 rtf

    我正在尝试导出一个FlowDocument其中包含一个 rtf 网格 我使用了以下代码 using FileStream fs new FileStream C demo rtf FileMode OpenOrCreate FileAcce
  • 我应该在 Uber 应用程序中放置什么重定向 URL?

    我正在阅读 Uber 的 sdk api 文档 但我是菜鸟 我不知道redirectURL 应该是什么 这是 Uber 提供的给定网址吗 因为我找不到它 或者是由应用程序开发人员部署自己的服务器 本地计算机定制的网页的 URL 如果是的话我
  • json_encode 可以触发 catch 块吗? [复制]

    这个问题在这里已经有答案了 这可能是一个非常简单的问题 但我找不到任何相关信息 我使用的系统聚合了来自不同来源的大量数据 然后将这些数据存储在数据库中 在大多数情况下 系统工作正常 但有时我们会遇到一个问题 即数据可能具有我们的系统不喜欢的
  • 使用 Spring Data 进行不区分大小写的排序

    如何使用 Spring data Pageable 进行不区分大小写的排序 我的存储库中有这个方法 public interface ItemRepository extends QueryDslPredicateExecutor
  • 使用类方法作为 celery 任务

    我正在尝试使用类的方法作为 django celery 任务 并使用 task 装饰器对其进行标记 描述了同样的情况here https stackoverflow com questions 8846489 celery python o