guyyug
guyyug

Reputation: 1087

Running django-celery on windows. EOFError

I am using windows 7 64 bit. I installed the latest versions of billiard, django-celery,and kombu. I included:

import djcelery
djcelery.setup_loader()

to my project setting.py

When I run the following from the root of my project:

python manage.py celeryd -l info

I get the following message (this is the last part of the message):

File "c:\python27\lib\pickle.py", line 562, in save_tuple
    save(element)
  File "c:\python27\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "c:\python27\lib\pickle.py", line 548, in save_tuple
    save(element)
  File "c:\python27\lib\pickle.py", line 306, in save
    rv = reduce(self.proto)
  File "c:\python27\lib\site-packages\celery\app\base.py", line 412, in __reduce__
    (self.__class__, self.Pickler) + self.__reduce_args__(),
  File "c:\python27\lib\site-packages\celery\app\base.py", line 422, in __reduce_args__
    else self.conf._pickleable_changes())
  File "c:\python27\lib\site-packages\celery\app\utils.py", line 77, in _pickleable_changes
    R.update(d)
TypeError: 'LazySettings' object is not iterable

C:\sources\tourtle>Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "c:\python27\lib\site-packages\billiard\forking.py", line 530, in main
    self = load(from_parent)
  File "c:\python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "c:\python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "c:\python27\lib\pickle.py", line 880, in load_eof
    raise EOFError
EOFError

I installed MinGW and added distutils.cfg to c:\MinGW\bin but it did not help

Thanks

Upvotes: 1

Views: 640

Answers (1)

mpaf
mpaf

Reputation: 6797

Check this discussion on github:

https://github.com/celery/django-celery/issues/228

A workaround is that you change celery/app/base.py (lines 418-419) in the way asksol proposes there:

from:

conf = (self.conf.changes if _forking._forking_is_enabled
        else self.conf._pickleable_changes())'

to:

conf = (self.conf.changes if _forking._forking_is_enabled
        else {})

It should then work fine

Upvotes: 1

Related Questions