【问题标题】:ADL LRS saves statement but responds with HTTP 500ADL LRS 保存语句,但响应 HTTP 500
【发布时间】:2017-03-16 06:59:48
【问题描述】:

我已经按照https://github.com/adlnet/ADL_LRS 上的 README.txt 安装了 ADL LRS。

我正在使用 TincanJS (https://github.com/RusticiSoftware/TinCanJS) 使用以下代码对其进行测试,语句被保存但响应代码为 500。

lrs = new TinCan.LRS(
        {

            ////// This works well
            endpoint: "https://cloud.scorm.com/tc/public/",
            username: "<Test User>",
            password: "<Test Password>",
            allowFail: false

            ////// This returns Internal Error(500)
            endpoint: "my.server:8000/xapi/",
            username: "<My User>",
            password: "<My Password>",
            allowFail: false
        }
);

var statement = new TinCan.Statement(
        {
            actor: {
                "name": "Ac Tor",
                "account": {
                    "homePage": "http://act.or",
                    "name": "actor"
                }
            },
            verb: {
                id: "http://adlnet.gov/expapi/verbs/experienced"
            },
            target: {
                id: "http://rusticisoftware.github.com/TinCanJS"
            }
        }
);

lrs.saveStatement(
        statement,
        {
            callback: function (err, xhr) {
                //...
            }
        }
);

登录 /ADL_LRS/../logs/lrs.log:

    2017-03-15 10:33:31,248 [ERROR] lrs.views: 500 === /xapi/statements
Traceback (most recent call last):
  File "/home/kursat/ADL_LRS/lrs/views.py", line 214, in handle_request
    return processors[path][req_dict['method']](req_dict)
  File "/home/kursat/ADL_LRS/lrs/utils/req_process.py", line 164, in statements_put
    check_activity_metadata.delay(stmt_ids)
  File "/home/kursat/env/local/lib/python2.7/site-packages/celery/app/task.py", line 453, in delay
    return self.apply_async(args, kwargs)
  File "/home/kursat/env/local/lib/python2.7/site-packages/celery/app/task.py", line 560, in apply_async
    **dict(self._get_exec_options(), **options)
  File "/home/kursat/env/local/lib/python2.7/site-packages/celery/app/base.py", line 354, in send_task
    reply_to=reply_to or self.oid, **options
  File "/home/kursat/env/local/lib/python2.7/site-packages/celery/app/amqp.py", line 305, in publish_task
    **kwargs
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/messaging.py", line 172, in publish
    routing_key, mandatory, immediate, exchange, declare)
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/connection.py", line 470, in _ensured
    interval_max)
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/connection.py", line 382, in ensure_connection
    interval_start, interval_step, interval_max, callback)
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/utils/__init__.py", line 246, in retry_over_time
    return fun(*args, **kwargs)
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/connection.py", line 250, in connect
    return self.connection
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/connection.py", line 756, in connection
    self._connection = self._establish_connection()
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/connection.py", line 711, in _establish_connection
    conn = self.transport.establish_connection()
  File "/home/kursat/env/local/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 116, in establish_connection
    conn = self.Connection(**opts)
  File "/home/kursat/env/local/lib/python2.7/site-packages/amqp/connection.py", line 183, in __init__
    return self._x_open(virtual_host)
  File "/home/kursat/env/local/lib/python2.7/site-packages/amqp/connection.py", line 628, in _x_open
    (10, 41),    # Connection.open_ok
  File "/home/kursat/env/local/lib/python2.7/site-packages/amqp/abstract_channel.py", line 67, in wait
    self.channel_id, allowed_methods, timeout)
  File "/home/kursat/env/local/lib/python2.7/site-packages/amqp/connection.py", line 241, in _wait_method
    channel, method_sig, args, content = read_timeout(timeout)
  File "/home/kursat/env/local/lib/python2.7/site-packages/amqp/connection.py", line 330, in read_timeout
    return self.method_reader.read_method()
  File "/home/kursat/env/local/lib/python2.7/site-packages/amqp/method_framing.py", line 189, in read_method
    raise m
error: [Errno 104] Connection reset by peer

提前致谢。

【问题讨论】:

  • 尝试针对托管的 ADL LRS 进行测试:lrs.adlnet.gov/xapi 如果这是安装问题或 LRS 的一般问题,这至少有助于缩小范围。 ..您可以使用用户名:tom,密码:1234
  • 嘿汤姆,感谢您的快速帮助,我已经用cloud.scorm.com/tc/public 和您的服务器进行了测试,没有问题。我已经重新安装了 lrs,这次也配置了 celery。如果这是相关的,但问题已经消失了。 (是的,我对你使用的几乎所有技术都是菜鸟)。

标签: django tin-can-api lrs


【解决方案1】:

在安装 LRS 期间创建的 log/ 文件夹中有日志文件。里面有一个lrs.log 文件,它会告诉你是什么导致了 500 错误。我能够将语句发送到本地 LRS 实例而没有 500 错误。请回复错误,以便我提供帮助。谢谢

【讨论】:

  • 我已经用 lrs.log 的最后一个日志更新了我的问题。正如我所说,在配置 rabbitmq 和 celery 之后,我没有收到任何错误。谢谢你的帮助。
【解决方案2】:

除非这只是 TinCanJS 的一个怪癖,否则我认为 target 应该是 object

【讨论】:

  • 这是 TinCanJS,发出的请求包含对象而不是目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
相关资源
最近更新 更多