разместить и положить API вызов через торнадо - PullRequest
0 голосов
/ 04 февраля 2020

Я хотел опубликовать и обновить данные в файле yaml с помощью вызова торнадо API. Не могли бы вы привести пример кода

import tornado.web
import tornado.ioloop
import nest_asyncio
import json



class basicRequestHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello , world...." )

if __name__ =="__main__":
    app = tornado.web.Application([(r"/", basicRequestHandler)])


    app.listen(8881)
    print("I'm listening on port 8881")
    tornado.ioloop.IOLoop.current().start()

1 Ответ

0 голосов
/ 18 февраля 2020

Подготовил для вас этот пример:

from typing import Dict

import tornado.web
import tornado.ioloop

import yaml
from tornado.escape import json_decode


class BaseHandler(tornado.web.RequestHandler):
    yaml_filename = 'data.yaml'
    json_args: Dict

    async def prepare(self):
        self.json_args = json_decode(self.request.body) or {}

    def data_received(self, chunk):
        ...


class MainHandler(BaseHandler):
    def post(self):
        with open(self.yaml_filename, 'w') as file:
            # ...
            yaml.dump(self.json_args, file)

    def put(self):
        with open(self.yaml_filename) as file:
            yaml_data = yaml.full_load(file)
        # ...
        yaml_data.update(self.json_args)
        # ...
        with open(self.yaml_filename, 'w') as file:
            yaml.dump(yaml_data, file)


if __name__ == "__main__":
    app = tornado.web.Application([(r"/", MainHandler)])
    app.listen(8881)
    print("I'm listening on port 8881")
    tornado.ioloop.IOLoop.current().start()
...