我正在使用 Twilio 通过 appengine 发送短信。Twilio 不接受超过 160 个字符的短信,所以我必须拆分它们。我将短信拆分并发送如下:
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 的顺序绝对正确。为了克服短信的错误顺序,我试过了
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 这个问题将得到解决。但是问题仍然存在,即文本仍然以错误的顺序发送。我检查了日志,但看不到任何关于任务失败的通知——它们似乎只是以错误的顺序执行。
有什么我想念的吗?我该如何解决这个问题。