Coder Social home page Coder Social logo

appsembler / edx-xapi-bridge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from adlnet-archive/edx-xapi-bridge

5.0 5.0 2.0 118 KB

Watch edX's tracking log for changes, convert events to xAPI format, and publish them to an LRS

License: Apache License 2.0

Python 100.00%

edx-xapi-bridge's People

Contributors

bryanlandia avatar garemoko avatar thraxil avatar ty- avatar wegrata avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

edx-xapi-bridge's Issues

archive?

This repo has not had an update in more than 2 years.

Please either archive this repo or provide a brief description of how it is still used and help me designate an owner who can be responsible for ensuring that the repo is properly maintained for security updates.

Archiving is safe and reversible. We will not lose any data in the repo and artifacts such as releases will still be available; it will just prevent future updates or PRs without first explicitly un-archiving the repo.

This issue is assigned to you because you are the last developer to commit code to it. If you believe someone else in a better position to evaluate this decision, re-assign this issue to them.

If you don't have admin permissions on the repo and can't archive it. Re-assign this issue to @thraxil with a note to that effect.

If there has been no response to this issue by the end of sprint 89 (June 3rd), this repo will automatically be archived.

Tripped up by not using caching

In lms_api.py, the object will always set an attribute cache. It might be bool, or it might point to the cached information if in settings.py LMS_API_USE_MEMCACHED is true.

However, later, when deciding whether to scan cache or re-query xAPI, the test is simply
if hasattr(self, 'cache'):

This will always be true. And because of that, later in the block if one is not using caching
cached_user_info = self.cache.get(self.CACHE_ACCOUNTS_PREFIX + username)

Will result in the following error:
"bool' object has no attribute 'set'"

A simple fix was:
if hasattr(self, 'cache') and not isinstance(self.cache,bool):

However, it would be more logical to either have:

  • have 2 properties - one that says there's caching and the other one pointing to such, or
  • not create the "cache" attribute in the first place if there's no need

tracking.log cannot be trusted anymore

Ironwood.master, pyinotify==0.9.6
After packing to gz log file and creating new it crashes

ERROR:pyinotify:The pathname '/edx/var/log/tracking/tracking.log' of this watch <Watch wd=1 path=/edx/var/log/tracking/tracking.log mask=3074 proc_fun=None auto_add=False exclude_filter=<function <lambda> at 0x7f678ce891b8> dir=False > has probably changed and couldn't be updated, so it cannot be trusted anymore. To fix this error move directories/files only between watched parents directories, in this case e.g. put a watch on '/edx/var/log/tracking'.
ls -la -u /edx/var/log/tracking/
total 5012
drwxr-xr-x  2 root   root    16384 ноя 10 16:44 .
drwxr-xr-x 19 syslog syslog   4096 ноя 10 07:17 ..
-rw-r-----  1 syslog adm    214514 ноя 10 16:46 tracking.log
-rw-r-----  1 syslog adm     32212 ноя 10 16:16 tracking.log-20201110-1605014221.gz
-rw-r-----  1 syslog adm     34602 ноя  9 14:16 tracking.log-20201109-1604920621.gz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.