0

Django Celeryに対して次のタスクがあります(Amazon SQSを使用)。

@task
def upload_task(request, **kwargs):
    file = request.FILES['file']
    ContactCSVModel.import_from_file(file)
    return True

これは機能しているように見えます。つまり、ファイルはデータベースに正常に追加されていますが、Celeryを使用しているかどうかはわかりません。これが機能したかどうかはどうすればわかりますか。私は何かを見るべきですか?ターミナルで走りました...

manage.pycelery worker --loglevel=infoは、という1つのタスクがあることを示していますがcontacts.tasks.upload_task、何も起こらないと述べています。

[2013-03-14 20:52:47,947:INFO / MainProcess]コンシューマー:sqs:// AJSUQJZKNSJA81JM @localhost//に接続しました

タスクが実行されて完了したかどうかはわかりません(データベースにあるために完了したことはわかっていますが、Celery経由でしたか?)

これは、タスクが実行される場所です

views.py

@login_required
def upload(request):
    # If we had a POST then get the request post values.
    if request.method == 'POST':
        form = ContactUploadForm(request.POST, request.FILES)
        # Check we have valid data
        if form.is_valid():
            upload_task(request)
            #file = request.FILES['file']
            #ContactCSVModel.import_from_file(file)
            messages.add_message(request, messages.SUCCESS, 'Items have been added')
        else:
            messages.add_message(request, messages.ERROR, ' Cannot upload CSV file.')

            return render_to_response('contacts/home.html', context_instance=RequestContext(request))
    else:
        form = ContactUploadForm()
        # Do this part no matter the outcome above.
    context = {'form': form}
    return render_to_response('contacts/home.html', context, context_instance=RequestContext(request))

私が言ったように、これはデータベースにロードされたcsvデータで機能しますが、Celeryは何もしていないと思います。

これが私のセロリの設定です。

# Celery
BROKER_TRANSPORT_OPTIONS = {'queue_name_prefix': 'celery-'}
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
    'region': 'eu-west-1',
    }
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'xyz'
4

1 に答える 1

5

Celeryワーカーログにタスクの証拠が表示されない理由は、実際にはタスクを非同期で呼び出していないためです。views.pyで、の代わりにupload_task(request)、を試しupload_task.delay(request)てから、ワーカーログを確認してください。タスクで装飾された関数を非同期で実行するには、.delay()メソッドまたは.apply_async()メソッドのいずれかを使用する必要があります。ドキュメント内の他の場所の中で、これはここでカバーされています。

より一般的には、タスクを追跡および管理するためのより視覚的に魅力的な方法を探している場合は、セロリの花をチェックしてください。

于 2013-03-14T21:14:14.693 に答える