我对芹菜有问题。我正在使用Amazon SQS芹菜。我设置了有关芹菜和SQS的所有内容。 任务中的功能。
我成功地将消息发送到SQS,我可以在SQS Portal中看到我的消息在消息可用的部分中。但是他们没有得到任何芹菜工人。我想我必须在“航班中的消息”部分中看到消息。这是屏幕截图:我是我的
Views.py,我在tasks.py中运行函数。
verify_mail.delay([email protected])
my
tasks.py:
from celery import shared_task
from time import sleep
from django.shortcuts import render, redirect, HttpResponse
import boto3
@shared_task
def verify_mail(new_email):
ses = boto3.client('ses')
response = ses.verify_email_identity(
EmailAddress = new_email
)
return None
如果我这样运行:verify_mail([电子邮件保护]
),那没有问题。但是当我用delay()运行时,它不起作用。 我毫无问题地使用此代码开始了芹菜工人:
celery -A myProject worker -l INFO --without-gossip --without-mingle --without-heartbeat -Ofair --pool=solo
mymycelery.py:
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myProject.settings')
app = Celery('myProject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True, ignore_result=True)
def debug_task(self):
print(f'Request: {self.request!r}')
my my
SETTINGS.PY:
CELERY_BROKER_URL = "sqs://{aws_access_key}:{aws_secret_key}@".format(
aws_access_key=AWS_ACCESS_KEY_ID, aws_secret_key=AWS_SECRET_ACCESS_KEY
)
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-central-1',
}
CELERY_RESULT_BACKEND = None
CELERY_ENABLE_REMOTE_CONTROL = False
CELERY_SEND_EVENTS = False
最好查看队列上的已删除消息。在某个时间,飞行中的消息只是一个快照。如果该消息已经被删除,因为任务不需要很长时间才能完成,那么飞行中就不会有消息。我认为您的任务不长时间完成(也许1秒)。当时,飞行指标中的消息在那时更新了什么几率?为了确保只需检查队列上的已删除消息或作为测试方式,请在每个任务中添加大约60秒的睡眠即可。这将使任务花费更长的时间,并让您看到它在飞行中。