libtorrent отключает dht и lsd в сессии

Мы создаем сеанс libtorrent следующим образом:

ses_settings = lt.session_settings() 
ses_settings.ignore_limits_on_local_network = False
ses_settings.announce_to_all_trackers = True
ses_settings.ssl_listen = 0 
ses = lt.session()
ses.listen_on(LISTEN_ON_RANGE_START, LISTEN_ON_RANGE_END)
ses.set_settings(ses_settings)
ses.set_download_rate_limit(download_rate)
ses.set_upload_rate_limit(upload_rate)

Как и в случае с ssl_listen, мы хотим отключить DHT, LSD, UPnP, NAT-PMP в сеансе libtorrent. Есть ли способ сделать это?

Также на странице руководства libtorrent это упоминается как:

Configuration options can be updated after the session is started by calling apply_settings(). Some settings are best set before starting the session though, like listen_interfaces, to avoid race conditions. If you start the session with the default settings and then immediately change them, there will still be a window where the default settings apply.

Changing the settings may trigger listen sockets to close and re-open and NAT-PMP, UPnP updates to be sent. For this reason, it's typically a good idea to batch settings updates into a single call.

Как выполнить пакетное обновление настроек за один вызов?

По сути, мы хотим изменить эти поля настроек по умолчанию: enable_lsd, enable_dht, enable_upnp, enable_natpmp, а затем создать объект сеанса с этими настройками.


person Harsh Sharma    schedule 30.07.2019    source источник
comment
Обратите внимание, что вам обычно не нужно отключать его на уровне сеанса, вы можете отключить его для отдельных торрентов через torrent_flags_t.   -  person the8472    schedule 03.08.2019


Ответы (1)


тип session_settings и функция set_settings() в сеансе устарели (и были уже довольно давно). Справочная документация в Интернете (https://libtorrent.org) предназначена для самой последней стабильной версии, поэтому вы не будете найти их задокументированы там.

Вместо этого используйте settings_pack и apply_settings() в сеансе. Или, что еще лучше, передайте свой пакет настроек конструктору сеанса.

В интерфейсе C++ settings_pack — это класс с довольно простым интерфейсом, но в привязке python это просто словарь.

Чтобы настроить пакет настроек в python, вы делаете следующее:

sett = {'enable_lsd': False,
  'enable_dht': False,
  'enable_upnp': False,
  'enable_natpmp': False,
  'listen_interfaces': '0.0.0.0:%s' % LISTEN_ON_RANGE_START,
  'download_rate_limit': download_rate,
  'upload_rate_limit': upload_rate,
  'announce_to_all_tracker': True}
ses = lt.session(sett)
# ...

Все доступные настройки вы найдете в справочной документации.

person Arvid    schedule 31.07.2019
comment
Это отличная информация. Спасибо @Арвид - person Harsh Sharma; 05.08.2019