Twilio を使用して appengine で SMS を送信しています。Twilio は 160 文字を超える SMS を受け付けないので、分割する必要があります。SMSを分割して、次のように送信しています。
def send_sms_via_twilio(mobile_number, message_text):
client = TwilioRestClient(twilio_account_sid , twilio_auth_token)
message = client.sms.messages.create(to=mobile_number, from_=my_twilio_number, body=message_text)
split_list = split_sms(long_message)
for each_message in split_list:
send_sms_via_twilio(each_message)
ただし、送信の順序が異なることがわかりました。たとえば、2/5、1/5、4/5 などのメッセージを受信することもあれば、順序が正しい場合もあります。split_list の順序は間違いなく正しいです。私が試したSMSの間違った順序を克服するために
for each_message in split_list:
deferred.defer(send_sms_via_twilio, each_message, _countdown=1)
しかし、私は同じ問題に遭遇しました。私はそれから試しました
for each_message in split_list:
deferred.defer(send_sms_via_twilio, each_message, _countdown=1, _queue="send-text-message")
私のキューを次のように定義しました
- name: send-text-message
rate: 1/s
bucket_size: 10
max_concurrent_requests: 1
retry_parameters:
task_retry_limit: 5
問題は同時実行性 (python27 で実行) であり、max_concurrent_requests を制限すればこの問題は解決されると考えています。ただし、問題は依然として存在します。つまり、テキストは依然として間違った順序で送信されます。ログを確認しましたが、タスクの失敗の通知が表示されませんでした。間違った順序で実行されているようです。
足りないものはありますか?この問題を解決するにはどうすればよいですか。