Warum sind celery_taskmeta und andere Tabellen nicht erstellt werden, wenn ein syncdb in django?
Ich versuche zu setup Sellerie und django, aber der celery_taskmeta Tabelle wird nicht erstellt.
Habe ich folgten zahlreiche (Aktuelle) tutorials Hinzugefügt djcelery und djkombu zu meinem installed_apps. Hinzugefügt wurde die 'BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport" " Linie, um meine Einstellungen, etc.
Kann ich den daemon just fine, und es werden Aufgaben ausführen, aber es spuckt dieser traceback am Ende:
==============
2011-08-05 16:21:16,231: ERROR/MainProcess] Task slate.modules.filebrowser.tasks.gen_thumb_task[0afc564b-cc54-4f4c-83f5-6db56fb23b76] raised exception: DatabaseError('no such table: celery_taskmeta',)
Traceback (most recent call last):
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/worker/job.py", line 107, in execute_safe
return self.execute(*args, **kwargs)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/worker/job.py", line 125, in execute
return super(WorkerTaskTrace, self).execute()
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/execute/trace.py", line 79, in execute
retval = self._trace()
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/execute/trace.py", line 93, in _trace
r = handler(trace.retval, trace.exc_type, trace.tb, trace.strtb)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/worker/job.py", line 140, in handle_success
self.task.backend.mark_as_done(self.task_id, retval)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/backends/base.py", line 54, in mark_as_done
return self.store_result(task_id, result, status=states.SUCCESS)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/celery/backends/base.py", line 194, in store_result
return self._store_result(task_id, result, status, traceback, **kwargs)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/backends/database.py", line 20, in _store_result
traceback=traceback)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 36, in _inner
return fun(*args, **kwargs)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 154, in store_result
"traceback": traceback})
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 78, in update_or_create
return self.get_query_set().update_or_create(**kwargs)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/djcelery/managers.py", line 62, in update_or_create
obj, created = self.get_or_create(**kwargs)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 378, in get_or_create
return self.get(**lookup), False
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 344, in get
num = len(clone)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 82, in __len__
self._result_cache = list(self.iterator())
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator
for row in compiler.results_iter():
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter
for rows in self.execute_sql(MULTI):
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
cursor.execute(sql, params)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site- packages/django/db/backends/util.py", line 34, in execute
return self.cursor.execute(sql, params)
File "/Users/erichutchinson/python-env/slate/lib/python2.7/site- packages/django/db/backends/sqlite3/base.py", line 234, in execute
return Database.Cursor.execute(self, query, params)
DatabaseError: no such table: celery_taskmeta
-============================
also wie zum Teufel bekomme ich diese Tabelle erstellt, während syncdb?
- Hast du add
djcelery
zu IhremINSTALLED_APPS
? - ja, die anderen Tabellen in djcelery.Modelle synchronisiert werden just fine
- Hatte das gleiche Problem. Wenn Sie aktualisiert hatte Sellerie von einer alten version, syncdb nicht neue Tabellen erstellen, müssen Sie installieren Süden und machen Sie einen "python manage.py Wandern" zum erstellen der neuen Tabellen,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rannte in die genau gleiche Problem, frisch installiert. Herabstufung Sellerie und django-Sellerie 2.2.7 und erneut ausführen syncdb gelöst (für den Zwischenbericht sowieso).
Das problem hier ist eigentlich, dass South verwaltet die djcelery Tabellen. Sie müssen migrieren djcelery bis es neue schema. Wenn Sie ein Upgrade djcelery von einer früheren version, und Sie habe bereits eine Reihe von Tabellen installiert haben, müssen Sie zu tun eine gefälschte migration ersten:
Ich hatte die gleichen Probleme vor, aber diese behoben.
Ich war auch immer der folgende Fehler:
Nachdem es ein bisschen weiter glaube ich der richtige Weg, um dieses problem zu lösen (gezogen von hier) es fügen Sie die folgenden
INSTALLED_APPS
:Hinzufügen
kombu.transport.django
fühlte sich falsch.War ich immer eine ähnliche Fehlermeldung:
In meinem Fall, ich brauchte, um hinzuzufügen eine Django-app, die aus einer verwandten-Technologie, um die
INSTALLED_APPS
Einstellung. In meinem Fall war es:kombu.transport.django
Danach habe ich reran
syncdb
und alles funktionierte. In Ihrem Fall, vielleicht noch etwas in die Sellerie-ei auf den Weg.Ich habe diesen Fehler während der Ausführung
manage.py dumpdata
. Ich habe versucht, zwei verschiedene 2.2.x-Versionen der Sellerie und django-celery Pakete mit einer MySQL-Datenbank. In meinem Fall ein Upgrade zu 2.2.7 nicht das Problem zu beheben. Was funktioniert hat war die Beratung auf dieser Github Ausgabe #34.Bei der Verwendung von dumpdata auf Django 1.3+, fügen Sie die
--exclude djcelery
option. (Natürlich, wenn Sie dumping-nur eine Teilmenge der apps und Modelle, die Sie nicht Holen Sie sich die fehlende Tabelle Fehler sowieso. Und wenn Sie nicht mit dumpdata in den ersten Platz, diese Antwort nicht gelten.)Das problem ist wohl SQLite3. Sie können nicht gleichzeitig in Django und es wirft ein irreführender Fehler. Wechseln Sie zu PostgreSQL oder MySQL, speziell für celeryd Entwicklung.
Oder in den sauren Apfel beissen, und setup RabbitMQ ...