diff --git a/src/smpp_gateway/management/commands/smpp_client.py b/src/smpp_gateway/management/commands/smpp_client.py index be422bd..562ada1 100644 --- a/src/smpp_gateway/management/commands/smpp_client.py +++ b/src/smpp_gateway/management/commands/smpp_client.py @@ -57,6 +57,11 @@ def add_arguments(self, parser): type=int, default=os.environ.get("SMPPLIB_MT_MESSAGES_PER_SECOND", 20), ) + parser.add_argument( + "--socket-timeout", + type=int, + default=os.environ.get("SMPPLIB_SOCKET_TIMEOUT", 30), + ) parser.add_argument( "--database-url", default=os.environ.get("DATABASE_URL"), diff --git a/src/smpp_gateway/outgoing.py b/src/smpp_gateway/outgoing.py index 12878f9..16e8e4b 100644 --- a/src/smpp_gateway/outgoing.py +++ b/src/smpp_gateway/outgoing.py @@ -1,6 +1,6 @@ import logging -from django.db import connection +# from django.db import connection from django.utils import timezone from rapidsms.backends.base import BackendBase @@ -48,5 +48,6 @@ def send(self, id_, text, identities, context=None): MTMessage.objects.bulk_create( [MTMessage(**kwargs) for kwargs in kwargs_group] ) - with connection.cursor() as curs: - curs.execute(f"NOTIFY {self.model.name}") + # FIXME: Re-enable when we have a way to avoid notifies on bulk SMS + # with connection.cursor() as curs: + # curs.execute(f"NOTIFY {self.model.name}") diff --git a/src/smpp_gateway/smpp.py b/src/smpp_gateway/smpp.py index 1c1d401..6b07c69 100644 --- a/src/smpp_gateway/smpp.py +++ b/src/smpp_gateway/smpp.py @@ -20,6 +20,7 @@ def get_smpplib_client( submit_sm_params: dict, set_priority_flag: bool, mt_messages_per_second: int, + socket_timeout: int, hc_check_uuid: str, hc_ping_key: str, hc_check_slug: str, @@ -38,10 +39,12 @@ def get_smpplib_client( submit_sm_params, set_priority_flag, mt_messages_per_second, + # Pass-through arguments to smpplib.client.Client: host, port, allow_unknown_opt_params=True, sequence_generator=sequence_generator, + timeout=socket_timeout, ) return client @@ -73,6 +76,7 @@ def start_smpp_client(options): json.loads(options["submit_sm_params"]), options["set_priority_flag"], options["mt_messages_per_second"], + options["socket_timeout"], options["hc_check_uuid"], options["hc_ping_key"], options["hc_check_slug"], diff --git a/tests/test_client.py b/tests/test_client.py index 3331ac5..efcc22e 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -26,6 +26,7 @@ def test_received_mo_message(self): {}, # submit_sm_params False, # set_priority_flag 20, # mt_messages_per_second + 30, # socket_timeout "", # hc_check_uuid "", # hc_ping_key "", # hc_check_slug @@ -63,6 +64,7 @@ def test_received_message_receipt(self): {}, # submit_sm_params False, # set_priority_flag 20, # mt_messages_per_second + 30, # socket_timeout "", # hc_check_uuid "", # hc_ping_key "", # hc_check_slug @@ -106,6 +108,7 @@ def test_received_null_short_message(self): {}, # submit_sm_params False, # set_priority_flag 20, # mt_messages_per_second + 30, # socket_timeout "", # hc_check_uuid "", # hc_ping_key "", # hc_check_slug @@ -145,6 +148,7 @@ def test_message_sent_handler(): {}, # submit_sm_params False, # set_priority_flag 20, # mt_messages_per_second + 30, # socket_timeout "", # hc_check_uuid "", # hc_ping_key "", # hc_check_slug @@ -183,6 +187,7 @@ def get_client_and_message( submit_sm_params or {}, set_priority_flag, 20, # mt_messages_per_second + 30, # socket_timeout "", # hc_check_uuid "", # hc_ping_key "", # hc_check_slug