denshoproject / ddr-local

Web UI used for interacting with DDR collections and entities on a local machine.
Other
3 stars 0 forks source link

Remove django_celery; upgrade Celery #259

Closed gjost closed 4 years ago

gjost commented 5 years ago

TLDR django-celery is obsolete, upgrade Celery.

A recent update to Django, Celery, django_celery, or someting else is causing Celery to crash on start:

(ddrlocal) ddr@deb9a:/opt/ddr-local-develop$ python ddrlocal/manage.py celery                                                             
Traceback (most recent call last):
  File "ddrlocal/manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 206, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 40, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/djcelery/management/commands/celery.py", line 11, in <module>
    class Command(CeleryCommand):
  File "/opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/djcelery/management/commands/celery.py", line 23, in Command
    preload_options)
TypeError: can only concatenate list (not "tuple") to list

It's possible to comment out part of /opt/ddr-local-develop/venv/ddrlocal/local/lib/python2.7/site-packages/djcelery/management/commands/celery.py and get it to work:

21,23c21,23
<     options = (cc_options +
<                base_options +
<                preload_options)
---
>     #options = (cc_options +
>     #           base_options +
>     #           preload_options)

This modification would have to be done either each time ddr-local dependencies are installed or we will have to fork django-celery. However django-celery is obsolete as of Celery 3.1, so the best thing to do would be to just upgrade Celery.

GeoffFroh commented 5 years ago

Apply band-aid fix for now; save full replacement task for next dev release

gjost commented 5 years ago

Added the band-aid in ddr-local commit 7209a4a. The forked project is https://github.com/densho/django-celery/

gjost commented 5 years ago

Helpful article: https://stackabuse.com/asynchronous-tasks-in-django-with-redis-and-celery/

gjost commented 4 years ago

Fixed in ddr-local commit 7075f81c84 for package ddrlocal-master-5.0.0