【发布时间】:2013-03-14 21:04:04
【问题描述】:
我有以下 Django Celery 任务(使用 Amazon SQS)。
@task
def upload_task(request, **kwargs):
file = request.FILES['file']
ContactCSVModel.import_from_file(file)
return True
这似乎有效,即文件已成功添加到我的数据库中,但我不确定它是否完全使用 Celery。我怎么知道这是否有效。我应该看点什么吗?在我跑的终端...
manage.py celery worker --loglevel=info,其中指出我有一个名为 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 设置....
# Celery
BROKER_TRANSPORT_OPTIONS = {'queue_name_prefix': 'celery-'}
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'xyz'
【问题讨论】:
-
你能分享你输入的运行任务吗?即,如果您尝试在 shell 中运行它,您输入的行...
-
当然,刚刚更新:)
标签: django django-celery