Мне нужно контролировать количество ресурсов, используемых flask -restful.
Согласно документации, flask должен запускаться по умолчанию как однопоточное приложение.
В этом минимальном примере:
import datetime
import time
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
print('HelloWorld called_at', datetime.datetime.now())
return {'hello world': 'time: %s' % datetime.datetime.now()}
class HelloLuca(Resource):
def get(self):
print('HelloLuca called_at', datetime.datetime.now())
time.sleep(100)
return {'hello': 'luca'}
api.add_resource(HelloWorld, '/helloworld')
api.add_resource(HelloLuca, '/helloluca')
if __name__ == '__main__':
app.run(debug=True)
Код может обработать запрос HelloWorld
, даже если запрос HelloLuca
не был завершен.
HelloLuca called_at 2020-06-19 09:15:03.220952
HelloWorld called_at 2020-06-19 09:15:06.958849
127.0.0.1 - - [19/Jun/2020 09:15:06] "GET /helloworld HTTP/1.1" 200 -
127.0.0.1 - - [19/Jun/2020 09:16:43] "GET /helloluca HTTP/1.1" 200 -
Я ожидал, что HelloWorld
будет обработано только после завершения HelloLuca
.
В моем случае мне нужно убедиться, что flask использует одно ядро (многопоточность в порядке).
- Как я могу контролировать использование ресурсов приложения (ядра / потоки)?
- Почему в этом небольшом примере не используется один поток?