小编Joe*_*aro的帖子

Celery - “WorkerLostError:Worker 过早退出:信号 11(SIGSEGV)”

我正在本地开发一个 Django 应用程序它需要将 CSV 文件作为输入并对该文件运行一些分析。我在本地运行 Celery、RabbitMQ 和 Web 服务器。当我导入文件时,我在 Celery 服务器上看到以下错误:

[2015-12-11 16:58:53,906: WARNING/MainProcess] celery@Joes-MBP ready.
[2015-12-11 16:59:11,068: ERROR/MainProcess] Task program_manager.tasks.analyze_list_import_program[db22de16-b92f-4220-b2bd-5accf484c99a] raised unexpected: WorkerLostError('Worker exited prematurely: signal 11 (SIGSEGV).',)
Traceback (most recent call last):
File "/Users/joefusaro/rl_proto2/venv/lib/python2.7/site-packages/billiard/pool.py", line 1175, in mark_as_worker_lost
human_status(exitcode)),
WorkerLostError: Worker exited prematurely: signal 11 (SIGSEGV).
Run Code Online (Sandbox Code Playgroud)

我不知道如何进一步解决这个问题;如果有帮助,我已经从 program_manager/tasks.py 复制了相关代码:

from __future__ import absolute_import

import csv
import rollbar
from celery import shared_task
from celery.utils.log import get_task_logger

from qscore.models import QualityScore
from integrations.salesforce.prepare import read_csv
from …
Run Code Online (Sandbox Code Playgroud)

python celery celery-task django-celery djcelery

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

JsonEditor与Django Admin集成

我正在努力将JSONEditor集成到Django管理员中.我的模型中有一个字段使用Postgres JSON,这个库中的树编辑器是完美的.

models.py

class Executable(models.Model):
    """ Simplified model for sake of the question."""

    recipe = JSONField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

我已经取得了不错的进展(我认为)将JSONEditor库集成在Django Admin的相应创建/编辑屏幕中.加载时数据显示正确,但由于某些原因,当我在JSONEditorWidget中进行编辑时,不会保存更改.我确信save我需要处理一些覆盖,或者我遗漏了一些显而易见的东西,但我真的不确定从哪里开始.

admin.py

import json
from django import forms, utils
from django.contrib import admin

from .models import Executable


class JSONEditorWidget(forms.Widget):
    html_template = """
        <div id='%(name)s_editor_holder'></div>
        <script type="text/javascript">
                var options = {
                    "mode": "tree",
                    "search": true
                };
                var %(name)s_editor = new JSONEditor(container, options);
                var json = %(value)s
                %(name)s_editor.set(json);
                %(name)s_editor.expandAll();

                var json = %(name)s_editor.get(json);
        </script>
        <textarea readonly class="vLargeTextField" cols="40" …
Run Code Online (Sandbox Code Playgroud)

django django-admin django-widget django-admin-tools django-jsonfield

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

芹菜 + Django 信号

我正在尝试将 Django Signals 的 post_save 函数与 Celery 任务结合使用。将新的 Message 对象保存到数据库后,我想评估该实例是否具有两个属性之一,如果有,则调用 'send_sms_function',它是 Celery 注册的任务。

任务.py

from my_project.celery import app

@app.task
def send_sms_message(message):
    # Do something
Run Code Online (Sandbox Code Playgroud)

信号.py

from django.db.models.signals import post_save
from django.dispatch import receiver

import rollbar
rollbar.init('234...0932', 'production')

from dispatch.models import Message
from comm.tasks import send_sms_message


@receiver(post_save, sender=Message)
def send_outgoing_messages(sender, instance, **kwargs):

if instance.some_attribute == 'A' or instance.some_attribute == 'B':
    try:
        send_sms_message.delay(instance)
    except:
         rollbar.report_exc_info()
else:
    pass
Run Code Online (Sandbox Code Playgroud)

我正在通过运行 Celery 工作器在本地测试它。当我在 Django shell 中调用 Celery 函数时,它按预期工作。但是,当我将 Message 实例保存到数据库时,该函数无法按预期工作:任务队列中没有发布任何内容,也没有看到任何错误消息。

我究竟做错了什么?

django django-signals celery celery-task

5
推荐指数
2
解决办法
6807
查看次数

为 boto3 MTurk 构建 HTMLQuestion XML

我正在尝试使用 HTMLQuestion 数据结构和 boto3 的create_hit函数构建 XML 以提交给 Amazon 的 Mechanical Turks 服务。根据文档,XML 的格式应该是这样的

我创建了一个类TurkTaskAssembler,它具有生成 xml 并通过 API 将此 XML 传递到 Mechanical Turks 平台的方法。我使用 boto3 库来处理与亚马逊的通信。

我生成的 XML 的格式似乎不正确,因为当我尝试通过 API 传递此 XML 时,出现验证错误,如下所示:

>>> tta = TurkTaskAssembler("What color is the sky?")
>>> response = tta.create_hit_task()
>>> ParamValidationError: Parameter validation failed: Invalid type for parameter Question, value: <Element HTMLQuestion at 0x1135f68c0>, type: <type 'lxml.etree._Element'>, valid types: <type 'basestring'>
Run Code Online (Sandbox Code Playgroud)

然后我修改了create_question_xml使用该tostring方法将 XML 信封转换为字符串的方法,但这会产生不同的错误:

>>> …
Run Code Online (Sandbox Code Playgroud)

xml lxml cdata boto3

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

Celery“收到未注册的任务类型”

我已经阅读了很多与此类似的帖子,但对我来说似乎没有任何意义。

我正在尝试将 Celery PeriodicTask 配置为每 5 秒触发一次,但我被 Celery 配置问题所困扰(我认为)

通讯/任务.py

import datetime
from celery.decorators import periodic_task

@periodic_task
def send_queued_messages():
    # do something...
Run Code Online (Sandbox Code Playgroud)

我的应用程序/settings.py

...
from comm.tasks import send_queued_messages
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
    'send_queued_messages_every_5_seconds': {
        'task': 'comm.tasks.send_queued_messages',   # Is the issue here?  I've tried a dozen variations!!
        'schedule': timedelta(seconds=5),
        },
    }
Run Code Online (Sandbox Code Playgroud)

我的错误日志的相关输出:

23:41:00 worker.1 | [2015-06-10 03:41:00,657: ERROR/MainProcess] Received unregistered task of type 'send_queued_messages'.
23:41:00 worker.1 | The message has been ignored and discarded.
23:41:00 worker.1 | 
23:41:00 …
Run Code Online (Sandbox Code Playgroud)

python celery django-celery celerybeat

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