Flask приложение игнорирует код для запроса cURL из-за параметра sys arg, но в sys arg ничего не передается - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть небольшое приложение flask с кодом ниже. Обратите внимание, что я удалил много кода просто для моего вопроса. Если что-то понадобится повторно добавить или пропустить, дайте мне знать.

1   @app.route("/app/data/", methods=['POST'])
2   def methodpost():
3
4       if 'Content-Type' in request.headers and request.headers['Content-Type'] == 'application/json':
5
6       #some_code
7       #some_more_code
8
9       if not any(['unittest' or 'discover' in arg for arg in sys.argv]):
10
11          #code_calls_external_stuff
12          #more_code
13
14
15      return msg
16
17
18      app.run(host=0.0.0.0, debug=debug, port=5000)

Когда я делаю cURL для него, используя следующее:

curl -X POST "localhost: 5000 / app / data / "-H" Тип содержимого: application / json "-d @ jsonBody

Не go в LINE-11 и LINE-12.

Однако, когда я изменяю LINE-9 следующим образом:

----FROM:----
if not any(['unittest' or 'discover' in arg for arg in sys.argv]):
----TO:----
if not any(['unittest' in arg for arg in sys.argv]):

, тогда он работает и вызывает LINE-11 и LINE-12. Вышеуказанное было добавлено только для того, чтобы я мог запускать UnitTest и Tox, пока приложение не запущено, потому что я не хотел совершать внешние вызовы ... Есть ли способ обойти это, сохранив код как есть.

1 Ответ

2 голосов
/ 15 апреля 2020
if not any(['unittest' or 'discover' in arg for arg in sys.argv]):

не делает то, что вы, кажется, хотите. Упростите это до

['x' or 'y' in a for a in ['y']]

, запустите его в REPL и подумайте, почему он отвечает ['x'].

...