Правильная передача глобальной переменной через несколько файлов и потоков - PullRequest
0 голосов
/ 08 июня 2019

Я использую сервер, которому нужно взять несколько переменных из файла конфигурации, а затем ссылаться на эти переменные в остальной части кода.большинство из них передаются как локальные, но тот, который я пытаюсь изменить, должен быть глобальным и устанавливается только один раз.Я получаю «глобальную переменную не определена», когда пытаюсь использовать ее позже в программе.Переменная устанавливается в исходном файле и вызывается позже в потоке.

Я пробовал несколько вариантов объявления переменной, используя «global myVariable», и ничего не изменило вывод.Это для значения, которое передается в поток redis для передачи на машину linux через WLAN.

Первый файл:

import files
from SWConnection import Connection

STREAM_INBOUND = None
STREAM_OUTBOUND = None

if __name__ == '__main__':

    city = getConfigVariable(Config, 'User', 'City')

    STREAM_INBOUND = city + '_IN_TEST'
    STREAM_OUTBOUND = city + '_OUT_TEST'

    connection.clientHandler() ##Opens script to handle client connection

Второй файл:

 class Connection(object):
    def clientHandler(self):

        newThread = ClientThread(client, ip, port, self.psql, self.rdb)

Третий файл:

class ClientThread(threading.Thread):
     def function(self):

        global STREAM_INBOUND

        searchFromTime = int((time.time()-1)*1000)
        returned_stream_results = self.rdb.xread({STREAM_INBOUND: str(searchFromTime)})

В настоящее время значение STREAM_INBOUND жестко закодировано, номы хотели бы иметь возможность установить его с помощью файла конфигурации, поэтому нам не нужно перекомпилировать изменения потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...