У меня есть этот код сервера, где я использую add_url_rule для добавления функции просмотра.
app = connexion.App(__name__, specification_dir='./swagger/')
app.add_url_rule('/etsiproxy/notify/<vnf_id>',
view_func=handle_sol003_notifications,
methods=['GET', 'POST'])
app.server = 'tornado'
# This is run from a different thread, create a default event loop for
# this thread for tornado.
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
self.threadLoop = loop
# Flask with Tornado works in single thread. Use the thread to store
# the server object, so that it can be accessed from the handler
thr = threading.current_thread()
thr.api_provider = self
app.run(server='tornado', port=self._port, host=self._host, debug=False)
Это моя функция обработчика:
def handle_sol003_notifications(cls, vnf_id):
notification = connexion.request.get_json()
if connexion.request.method == 'GET':
return None, 204
if notification['notificationType'] == 'VnfLcmOperationOccurrenceNotification':
payload = Sol003Yang.YangInput_Sol003_Sol003Rpc.from_dict(
{"vnfinstanceid": notification['vnfInstanceId'],
"notificationstatus": notification['notificationStatus'],
"operationstate": notification['operationState'],
"operation": notification['operation'],
"vnflcmopoccid": notification['vnfLcmOpOccId'],
})
task = get_api_provider().run_in_tasklet_loop(cls.DTS.query_rpc("I,/sol003:sol003-rpc", 0, payload))
return None, 204
Когда запрос на публикациюнажмите на этот URL, я получу эту ошибку: TypeError: функция просмотра не вернула правильный ответ.Это потому, что я возвращаю None, а фляга не нравится.
Но если я использую return '', 204 , это выдаст еще одну ошибку, сказав, что нельзя отправить тело с 204.
Как я могу вернуть 204 контента в этом случае?