标签: celery

在引导步骤添加芹菜队列

我想做两件事

  1. 我做了一个从远程加载配置的工人引导步骤。
  2. 我想从配置中获取一个参数并添加一个队列,并将其设置为消费者队列名称。

app.steps['worker'].add(LoadConfig)

完美无缺

但我无法进行 SetQueue 启动步骤

只是我的 SetQueue 现在看起来像:

class SetQueue(bootsteps.StartStopStep):

    requires = (Consumer, )

    def start(self, parent, **kwargs):

        parent.add_task_queue('q_name', exchange='q_name', routing_key='q_name')

app.steps['consumer'].add(SetQueue)
Run Code Online (Sandbox Code Playgroud)

它不起作用。

我认为我的问题是我不明白 - 在什么时候(requires=(???, )) 可以添加队列。

python celery

1
推荐指数
1
解决办法
1159
查看次数

创建 celery 多个队列

我有一个包含类别列表的配置文件

cat_link = {'cat1':[link1,link2....],'cat2':[link3,link4....],'cat3':[link5,link6....],'cat4':[link7,link8....]}
Run Code Online (Sandbox Code Playgroud)

我想根据配置文件中定义的类别总数创建队列,而且当我处理特定类别的链接时,每个队列都应该处理自己的一组链接。

处理链接的任务是相同的。我只是希望每个类别链接都应在其特定队列中进行处理。

它应该是这样的:-

for category, link in cat_link.iteritems():
    process_link.apply_async(args=[link],
                             queue=category,)
Run Code Online (Sandbox Code Playgroud)

我应该如何创建动态队列,记住将来可以删除/添加任何类别?

我的 celeryconfig 应该是什么样子的?目前如下:-

BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'

CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True

#Should I read my `cat_link` config setting in a loop and then create the queues??
Run Code Online (Sandbox Code Playgroud)

我见过不同的任务有不同的队列,但是同一个任务可能有不同的队列吗?

python celery

1
推荐指数
1
解决办法
2307
查看次数

Celery 登录 Heroku

我在 Heroku 上部署了一个 Celery 应用程序,但是在 Heroku 日志中我没有看到任何与任务相关的信息(我知道任务实际上已执行)。据我所知,Heroku 会自动收集记录到 stdout 或 stderr 的所有内容。Celery 默认不登录到 stdout/stderr 吗?还是我需要实现自定义日志记录?我希望至少在日志中看到类似“执行任务 X”的内容。

python heroku celery

1
推荐指数
1
解决办法
1382
查看次数

Theano 和 Celery:工人过早退出:信号 11(SIGSEGV)

我正在构建一个 Web 应用程序,通过从客户端发送 ajax 请求,我开始训练在服务器端使用 theano 实现的神经网络。显然,我不想等待服务器完全训练网络以将答案发送回我的客户端,因为这会很长。

所以我想出了 celery,它使我能够在服务器端执行异步代码。我用命令运行芹菜工人celery -A CBIR worker -l info。不幸的是,每次有工作人员运行我的任务(正在使用 theano 训练我的网络)时,我都会收到以下消息:

[2015-12-14 19:15:06,790: ERROR/MainProcess] Process 'Worker-3' pid:1610 exited with 'signal 11 (SIGSEGV)'
[2015-12-14 19:15:07,001: ERROR/MainProcess] Task fit[ac40d4d4-5b56-4278-b270-647ef76f3a49] raised unexpected: WorkerLostError('Worker exited prematurely: signal 11 (SIGSEGV).',)
Traceback (most recent call last):
File "/Users/leo/anaconda/envs/ImgRet/lib/python3.5/site-packages/billiard/pool.py", line 1175, in mark_as_worker_losthuman_status(exitcode)),
billiard.exceptions.WorkerLostError: Worker exited prematurely: signal 11 (SIGSEGV).
Run Code Online (Sandbox Code Playgroud)

我一直在寻找为什么会发生此错误,并且据我所知,我正在运行的代码正在遭受内存泄漏。我不明白的是为什么我的代码在不使用 celery 时运行没有问题,但在使用 Celery 时出现此错误?

最重要的是,我不知道如何解决这个问题。我使用 lldb 查看生成的转储文件,这是我的回溯:

thread #1: tid = 0x0000, 0x00007fff93b4a9b3 libdispatch.dylib`dispatch_group_async + 533, stop reason = …
Run Code Online (Sandbox Code Playgroud)

segmentation-fault celery theano

1
推荐指数
1
解决办法
1845
查看次数

对 Python Celery eta 的限制?

Celery 对任务的 eta 有限制吗?我想foo在 12 天后执行该方法,Celery 会不会有问题?或者我需要为这么长的 eta 配置任何 Celery 设置吗?

next_run = datetime.now() + timedelta(days = 12)
foo.apply_async(args=[], eta = next_run)
Run Code Online (Sandbox Code Playgroud)

python asynchronous celery celery-task

1
推荐指数
1
解决办法
758
查看次数

在 celery 中保存组结果:AttibuteError

我正在尝试保存组结果以供以后检索:

job = group([
    add.s(1, 1),
    add.s(2, 2)
])
result = job.apply_async()
result.save()

from celery.result import GroupResult
saved_result = GroupResult.restore(result.id)
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误消息:

*** AttributeError: 'DisabledBackend' object has no attribute '_restore_group'
Run Code Online (Sandbox Code Playgroud)

CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'在我的配置中设置了后端。

我该如何解决这个问题?

python celery flask

1
推荐指数
1
解决办法
1689
查看次数

运行celery worker时“找不到python-django或python3-django的安装版本”

当我通过 ubuntu 15.04 终端运行命令时

芹菜工人 -A celery_blog -l inf -c 5

我总是得到

找不到已安装的 python-django 或 python3-django 版本。

虽然我已经为 python 2.x 和 3.x 安装了 django,但您也可以参考附加的屏幕截图。

在此处输入图片说明

另外,为什么在运行 celery worker 时甚至要求 django?

python django celery

1
推荐指数
1
解决办法
3691
查看次数

AWS Elastic Beanstalk上的Celery配置存在问题-“没有对进程的配置更新”

我已经在AWS Elastic Beanstalk上部署了Django 2应用程序,并且我正在尝试配置Celery,以便在同一台计算机上执行异步任务。

我的文件:

02_packages.config

files:
  "/usr/local/share/pycurl-7.43.0.tar.gz" :
    mode: "000644"
    owner: root
    group: root
    source: https://pypi.python.org/packages/source/p/pycurl/pycurl-7.43.0.tar.gz

packages:
  yum:
    python34-devel: []
    libcurl-devel: []

commands:
  01_download_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'curl -O https://bootstrap.pypa.io/get-pip.py'
  02_install_pip3:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL
    command: 'python3 get-pip.py'

container_commands:
  03_pycurl_reinstall:
    # run this before PIP installs requirements as it needs to be compiled with OpenSSL …
Run Code Online (Sandbox Code Playgroud)

django celery supervisord amazon-elastic-beanstalk

1
推荐指数
1
解决办法
1134
查看次数

Django芹菜监视器未显示任何任务

我看不到管理员中的任务。我按照https://github.com/jezdez/django-celery-monitor中的步骤进行操作

我用了

celery==4.1.1
django-celery-results==1.0.1
django-celery-beat==1.0.1
django_celery_monitor==1.1.2
Run Code Online (Sandbox Code Playgroud)

manage.py migrate celery_monitor迁移进行得很顺利。然celery -A lbb events -l info --camera django_celery_monitor.camera.Camera --frequency=2.0celery -A lbb worker -l info在分离的外壳。但是仍然看不到我在celery-monitor > tasks表中运行的任务。

python django celery

1
推荐指数
1
解决办法
395
查看次数

Celery worker ImportError:没有名为“项目”的模块

当我尝试启动工作程序时,出现一个问题:
ImportError:没有名为“ project”的模块

追溯(最近一次通话):

  File "/usr/local/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/celery/__main__.py", line 16, in main
    _main()
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/celery.py", line 322, in main
    cmd.execute_from_commandline(argv)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/celery.py", line 496, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 273, in execute_from_commandline
    argv = self.setup_app_from_commandline(argv)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 479, in setup_app_from_commandline
    self.app = self.find_app(app)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 501, in find_app
    return find_app(app, symbol_by_name=self.symbol_by_name)
  File "/usr/local/lib/python3.5/dist-packages/celery/app/utils.py", line 359, in find_app
    sym = symbol_by_name(app, imp=imp)
  File "/usr/local/lib/python3.5/dist-packages/celery/bin/base.py", line 504, in symbol_by_name
    return imports.symbol_by_name(name, imp=imp)
  File …
Run Code Online (Sandbox Code Playgroud)

python django celery celery-task django-celery

1
推荐指数
1
解决办法
1524
查看次数