10

セロリとジャンゴをセットアップしようとしていますが、celery_taskmeta テーブルが作成されていません。

多数の (最近の) チュートリアルに従い、djcelery と djkombu を installed_apps に追加しました。「BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"」行を設定などに追加しました。

デーモンを問題なく実行でき、タスクを実行しますが、最後に次のトレースバックを吐き出します。

==============

 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

-============================

では、syncdb 中にこのテーブルを作成するにはどうすればよいのでしょうか。

4

6 に答える 6

18

ここでの問題は、実際には South が djcelery テーブルを管理していることです。djcelery を新しいスキーマに移行する必要があります。以前のバージョンから djcelery をアップグレードし、すでに一連のテーブルがインストールされている場合は、最初に偽の移行を行う必要があります。

python manage.py migrate djcelery 0001 --fake
python manage.py migrate djcelery

以前も同じ問題がありましたが、これで解決しました。

于 2012-03-29T03:02:54.757 に答える
10

次のエラーも発生していました。

DatabaseError: no such table: djkombu_queue

もう少し詳しく調べた後、この問題を解決する正しい方法 (ここから取得) を次のように追加すると思いますINSTALLED_APPS

INSTALLED_APPS = ('djcelery.transport', )

追加kombu.transport.djangoは間違っていると感じました。

于 2012-08-28T19:30:26.507 に答える
5

まったく同じ問題、フレッシュインストールに遭遇しました。celeryとdjango-celeryを2.2.7にダウングレードし、syncdbを再実行すると、問題は解決しました(とにかく暫定的に)。

于 2011-08-08T04:49:11.180 に答える
1

実行中にこのエラーが発生しmanage.py dumpdataました。MySQL データベースを使用して、2 つの異なる 2.2.x バージョンのceleryおよびdjango-celeryパッケージを試しました。私の場合、2.2.7 にアップグレードしても問題は解決しませんでした。この Github Issue #34にあるアドバイスが役に立ちました。

Django 1.3 以降で dumpdata を使用する場合は、--exclude djceleryオプションを追加します。(もちろん、アプリとモデルのサブセットのみをダンプしている場合は、テーブルが見つからないというエラーは発生しません。そもそも dumpdata を使用していない場合、この回答は当てはまりません。)

于 2012-02-01T02:10:36.693 に答える