我正在本地开发一个 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) 我正在努力将JSONEditor集成到Django管理员中.我的模型中有一个字段使用Postgres JSON,这个库中的树编辑器是完美的.
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我需要处理一些覆盖,或者我遗漏了一些显而易见的东西,但我真的不确定从哪里开始.
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
我正在尝试将 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 实例保存到数据库时,该函数无法按预期工作:任务队列中没有发布任何内容,也没有看到任何错误消息。
我究竟做错了什么?
我正在尝试使用 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) 我已经阅读了很多与此类似的帖子,但对我来说似乎没有任何意义。
我正在尝试将 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) celery ×3
celery-task ×2
django ×2
python ×2
boto3 ×1
cdata ×1
celerybeat ×1
django-admin ×1
djcelery ×1
lxml ×1
xml ×1