私は開発環境で実行しているので、これは本番環境では異なる可能性がありますが、Django Celeryからタスクを実行すると、ブローカーから10〜20秒ごとにタスクをフェッチするだけのようです。この時点でテストしているだけですが、約1000のタスクを送信しているとしましょう。これは、完了するまでに5時間以上かかることを意味します。
これは正常ですか?もっと早くすべきですか?それとも私は何か間違ったことをしていますか?
これが私の仕事です
class SendMessage(Task):
name = "Sending SMS"
max_retries = 10
default_retry_delay = 3
def run(self, message_id, gateway_id=None, **kwargs):
logging.debug("About to send a message.")
# Because we don't always have control over transactions
# in our calling code, we will retry up to 10 times, every 3
# seconds, in order to try to allow for the commit to the database
# to finish. That gives the server 30 seconds to write all of
# the data to the database, and finish the view.
try:
message = Message.objects.get(pk=message_id)
except Exception as exc:
raise SendMessage.retry(exc=exc)
if not gateway_id:
if hasattr(message.billee, 'sms_gateway'):
gateway = message.billee.sms_gateway
else:
gateway = Gateway.objects.all()[0]
else:
gateway = Gateway.objects.get(pk=gateway_id)
#response = gateway._send(message)
print(message_id)
logging.debug("Done sending message.")
私の視点から実行されます
for e in Contact.objects.filter(contact_owner=request.user etc etc):
SendMessage.delay(e.id, message)