Я пытаюсь вызвать сервер, чтобы проверить его статус. Код сервера имеет глобальную переменную «status», которая имеет значение True или False. Сервер отправляет либо «UP», либо «DOWN» на основе значения статуса.Глобальное изменение переменной не отражается на вызове сервера
Я импортирую файл сервера в свой основной файл и пытаюсь установить переменную в значение False. Затем я отправляю новый запрос и ожидаю статус «ВНИЗ».
myfile.py
import server
response = urllib2.urlopen(url).read() #1
server.print_status() #2 Prints True (the default value) as expected
server.status = False #3
server.print_status() #4 Prints False as expected
response = urllib2.urlopen(url).read() #5
server.print_status() #6 Prints False as expected
server.py
status = True
def print_status()
global status
print status
class Handler(object):
@staticmethod
def handle(start_response):
global status
print status
if status:
start_response('200 OK')
return ['UP']
else:
start_response('503 Service Unavailable')
return ['DOWN']
Теперь я ожидаю ответа 'вниз' на линии № 5, но он всегда возвращался 'UP'. Я также печатаю значение статуса в обработчике запросов сервера. Там статус напечатан как True (строка # 5) вместо False, хотя строки # 4 и # 6 печатают False.
В коде сервера нет проблем, что я уверен. Вероятно, это связано с тем, как я звоню на сервер или с помощью urllib2. Любые предложения о том, что я делаю неправильно.
еще один код был бы полезен, без него ответ на ваш вопрос догадывается – Nhor
@Nhor какая часть кода действительно поможет? – akipro
ах .. Я думаю, серверный процесс, который отвечает на ваш HTTP-запрос, - это еще один процесс ... возможно, даже работает на другой машине ... – Pynchia