如何使用Python';s smpplib

如何使用Python';s smpplib,python,smpp,Python,Smpp,我已经能够发送短信到一个电话号码使用以下代码 import smpplib import settings import sys client = smpplib.client.Client(settings.SMS_SYSTEM_HOSTNAME, settings.SMS_SYSTEM_PORT) # Print when obtain message_id client.set_message_sent_handler( lambda pdu: sys.stdout.write('

我已经能够发送短信到一个电话号码使用以下代码

import smpplib
import settings
import sys

client = smpplib.client.Client(settings.SMS_SYSTEM_HOSTNAME, settings.SMS_SYSTEM_PORT)

# Print when obtain message_id
client.set_message_sent_handler(
  lambda pdu: sys.stdout.write('sent {} {}\n'.format(pdu.sequence, pdu.message_id)))
client.set_message_received_handler(
  lambda pdu: sys.stdout.write('delivered {}\n'.format(pdu.receipted_message_id)))

client.connect()
client.bind_transceiver(system_id=settings.SMS_SYSTEM_ID, password=settings.SMS_SYSTEM_PASSWORD)


pdu = client.send_message(
    source_addr_ton=smpplib.consts.SMPP_TON_INTL,
    #source_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
    # Make sure it is a byte string, not unicode:
    source_addr='SENDER',

    dest_addr_ton=smpplib.consts.SMPP_TON_INTL,
    #dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
    # Make sure thease two params are byte strings, not unicode:
    destination_addr='90474xxxxx',
    short_message=b'Test message')

print(pdu.sequence)
client.listen()

但该项目的主要目的是一次发送大量数据(至少一百万)。我该怎么做呢

显而易见的解决办法可能是

pdu = client.send_message(
    source_addr_ton=smpplib.consts.SMPP_TON_INTL,
    #source_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
    # Make sure it is a byte string, not unicode:
    source_addr='SENDER',

    dest_addr_ton=smpplib.consts.SMPP_TON_INTL,
    #dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
    # Make sure thease two params are byte strings, not unicode:
    destination_addr='904xxxxxxxx',
    short_message=b'Test message')


在一个循环中,但我怀疑它的效率。是否有更好、更有效的方法使用Python和SMPP发送批量SMS?

您可以使用消息代理和分布式任务队列(例如和)

通过这些,您可以执行异步任务。其中每个任务都是一段独立的代码,其中一个任务将发送一条SMS。 因此,您将在MessageBroker的队列中创建任务,而不是在循环中发送所有SMS。分布式任务队列服务将执行它们


PS:如果您使用循环,我建议您添加一个
try/except
。因此,如果
发送消息失败,您将不会被迫重新启动。

谢谢@AlexisG。我读了这些链接,它们似乎是一个解决方案,但不幸的是,我已经能够得到如何应用于解决我的问题的明确方向。如有任何进一步的指示,将不胜感激。我不想使用循环。这里有一个关于如何设置所有内容的教程(也许有更好的):。下面是要安装的芹菜包:。我知道需要掌握很多知识,但你会学到一些很酷很有用的东西