私はMySQL
でセロリを使用しています。私は、タスクIDをデータベースまたはセロリの変数task
の平凡な整数として格納する必要があります。どうやってやるの?データベース内の各セロリタスクのタスクIDを格納
6
A
答えて
12
セロリタスクモデルを作成し、そのモデルにセロリタスクIDを保存してみませんか?
class CeleryModel(models.Model):
celery_task_id = models.CharField(max_length = 50, unique=True)
そして:
def some_celery_task():
result = celery_task.delay()
celery_task = CeleryModel(celery_task_id = result.id)
celery_task.save() # added save line
あなたの整数値は、次のようになります。実際、一意celery_task_idに対応するcelery_task.id
。
UPDATE:別の方法...
まずpython manage.py inspectdb > inspectdb.py
。ファイル内には、
class CeleryTaskmeta(models.Model):
id = models.IntegerField(primary_key=True)
task_id = models.CharField(max_length=765, unique=True)
status = models.CharField(max_length=150)
result = models.TextField(blank=True)
date_done = models.DateTimeField()
traceback = models.TextField(blank=True)
hidden = models.IntegerField()
meta = models.TextField(blank=True)
class Meta:
db_table = u'celery_taskmeta'
次があります。python manage.py startapp celery_model
。このファイルをmodels.pyファイルに入れてください。私は南を使うので、最後のステップはpython manage.py convert_app celery_model
です。しかし、その不要です。今では、このセロリデータテーブルへのdjangoレベルのアクセス権を持ち、各タスクのプライマリキーを整数値として読み取ることができます。私はあなたがデータテーブルを改ざんしたいとは思わないので、賢い例えば
>>> ct = CeleryTaskmeta.objects.get(id=1)
>>> for k,v in ct.__dict__.items(): print k,v
...
status SUCCESS
task_id 2fa95f24-7640-434c-9fef-0732ac1d23c7
date_done 2013-02-17 19:22:56+00:00
traceback None
_state <django.db.models.base.ModelState object at 0x10263fa90>
meta eJxrYKotZAzlSM7IzEkpSs0rZIotZC7WAwBREgb9
result gAJLBC4=
hidden 0
id 1
誰かがあなたのCeleryTaskmeta
読み取り専用のモデルを作成する方法を知っているだろう。
UPDATE:あなたの質問の最後の部分に:
>>> from celerytest.tasks import add
>>> result = add.delay()
>>> result.int_id = 1
>>> for k,v in result.__dict__.items(): print k,v
...
parent None
app <Celery default:0x10264df10>
task_name celerytest.tasks.add
int_id 1
id 01503afd-d196-47af-8e10-e7dc06603cfc
backend <djcelery.backends.database.DatabaseBackend object at 0x1026842d0>
0
はセロリのタスクIDを取得するには、タスクが開始されたとき、私は次の操作を行います。
my_taskは内のメソッドであるprocess_task = my_task.apply_async(args=[args])
task_id = process_task.task_id
tasks.py
関連する問題
- 1. EメールID格納
- 2. データベースにオブジェクトを格納
- 3. JSFでのビューIDの格納
- 4. PHP - データベースのsimplexml_load_fileの値を格納
- 5. データベースにsymfonyのルートを格納
- 6. データベースのパラメータリストを格納する
- 7. 全体のデータセットをデータベースに格納
- 8. データベースの列にオブジェクトを格納する
- 9. ユーザーのコメントを格納するMySQLデータベース
- 10. JSONObjectをRealmObject内に格納
- 11. データベースIDと参照名を格納するためのより良い方法
- 12. ベクトル内のauto_ptrへのポインタを格納
- 13. php://の内容を変数に格納
- 14. イメージを格納するサーバー内のパス
- 15. MediaWiki; MySQLデータベースの資格情報が格納され、どのファイル?
- 16. データベースにファイルサイズを格納する
- 17. データベースにRubyコードを格納する
- 18. JSPタグをデータベースに格納する
- 19. データベースにMSMQキューを格納します。
- 20. データベースに曜日を格納する
- 21. csvファイルとデータベースにユーザーデータを格納
- 22. データ(文字列)をデータベースに格納
- 23. データベースに配列を格納する
- 24. derbyデータベースに配列を格納する
- 25. データベース内の1つのフィールドに複数の値を格納する
- 26. クラス内のデータベースからデータを格納/取得するときのベストプラクティス
- 27. データベース内のリストビューの表示位置を格納しています
- 28. データベース内のファイルのさまざまな種類を格納JPA(JEE6)
- 29. 各クラスを別々のファイルに格納するpython
- 30. テキストファイルの各行を配列に格納する
徹底的でクリーンな説明をありがとう! – pynovice
問題は、プロセスの開始時にtask_idを取得したいのですか? CeleryTaskMetaテーブルにデータが書き込まれるのは、ジョブが正常に完了した後だけです。 – pynovice
@Cole非同期スクレイプの結果をデータベースに保存するにはどうすればよいですか? – losee