Reputation: 1417
I'm getting a null
value when I go to 127.0.0.1:5111/ with the following code:
import logging
from logging import getLogger
import time
logging.basicConfig(level='DEBUG')
class MyDec:
def __init__(self, logger):
self.logger = logger
def __call__(self, f):
def wrapper(*args, **kwargs):
self.logger.info('Started task.')
f(*args, **kwargs)
self.logger.info('Completed task.')
return wrapper
logger = getLogger('My Logger')
from flask import Flask
from flask_restful import Api, Resource
app = Flask('App')
api = Api(app)
class Foo(Resource):
@MyDec(logger)
def get(self):
return 'Hello'
api.add_resource(Foo, '/')
app.run(port=5111, debug=True)
This works fine:
class Foo:
@MyDec(logger)
def bar(self, x, y=3):
print(x, y)
time.sleep(0.5)
foo = Foo()
foo.bar(x=1)
So there is something that the get() method does under the hood which I can't seem to figure out.
Upvotes: 0
Views: 524
Reputation: 2063
The __call__
method in your decorator doesn't return anything at the moment, so it's swallowing the return "Hello"
from your get
. Try something like this:
def __call__(self, f):
def wrapper(*args, **kwargs):
self.logger.info('Started task.')
data = f(*args, **kwargs)
self.logger.info('Completed task.')
return data
return wrapper
Upvotes: 2