Python TypeError:decorator()缺少1个必需的位置参数:';func';

Python TypeError:decorator()缺少1个必需的位置参数:';func';,python,python-huey,Python,Python Huey,我试图使用pythonhuey()来允许使用带有flask的任务队列 从函数开始: def some_long_calculation(): driver = create_chromedriver(True) print(driver.capabilities['version']) driver.get("https://www.yahoo.com/news/") 我将其导入tasks.py文件,并使用以下命令将其转换为任务函数: from . import my_

我试图使用pythonhuey()来允许使用带有flask的任务队列

从函数开始:

def some_long_calculation():
    driver = create_chromedriver(True)
    print(driver.capabilities['version'])
    driver.get("https://www.yahoo.com/news/")
我将其导入tasks.py文件,并使用以下命令将其转换为任务函数:

from . import my_huey
some_long_calculation_task = my_huey.task(some_long_calculation)
然后,我将一些_long_calculation_任务导入main/views.py并尝试使用以下工具运行它:

@main.route('/sanity_check')
def sanity_check():
    png = some_long_calculation_task()
    return send_file(io.BytesIO(png),mimetype='image/png')
但我得到:

traceback (most recent call last):
  File "...lib\site-packages\flask\app.py", line 1994, in __call__
    return self.wsgi_app(environ, start_response)
  File "...lib\site-packages\flask\app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "...lib\site-packages\flask\app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "...lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "...lib\site-packages\flask\app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "...lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "...lib\site-packages\flask\app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "...lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "...lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "...lib\site-packages\flask\app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "...app\main\views.py", line 123, in sanity_check
    png = some_long_calculation_task()
TypeError: decorator() missing 1 required positional argument: 'func'

>>> some_long_calculation_task
<function Huey.task.<locals>.decorator at 0x0000028CF8CF2BF8>
回溯(最近一次呼叫最后一次):
文件“…lib\site packages\flask\app.py”,第1994行,在调用中__
返回self.wsgi_应用程序(环境,启动响应)
wsgi_应用程序中1985行的文件“…lib\site packages\flask\app.py”
response=self.handle\u异常(e)
文件“…lib\site packages\flask\app.py”,第1540行,在handle\u异常中
重放(exc_类型、exc_值、tb)
文件“…lib\site packages\flask\\u compat.py”,第33行,重新登录
增值
wsgi_应用程序中1982行的文件“…lib\site packages\flask\app.py”
response=self.full\u dispatch\u request()
文件“…lib\site packages\flask\app.py”,第1614行,完整发送请求
rv=自身处理用户异常(e)
文件“…lib\site packages\flask\app.py”,第1517行,在handle\u user\u异常中
重放(exc_类型、exc_值、tb)
文件“…lib\site packages\flask\\u compat.py”,第33行,重新登录
增值
文件“…lib\site packages\flask\app.py”,第1612行,完整发送请求
rv=自我分派请求()
文件“…lib\site packages\flask\app.py”,第1598行,在调度请求中
返回self.view_函数[rule.endpoint](**req.view_参数)
文件“…app\main\views.py”,第123行,在健全性检查中
png=一些长的计算任务()
TypeError:decorator()缺少1个必需的位置参数:“func”
>>>一些长的计算任务

如何修复此问题?

根据错误消息,
任务
返回一个修饰符(通常与
@
一起用作语法糖)

请尝试以下代码:

from . import my_huey
some_long_calculation_task = my_huey.task()(some_long_calculation)
这种“正常”用法类似于

@my_huey.task()
def my_function(...):
    ...

根据错误消息,
task
返回一个修饰符(通常与
@
一起用作语法糖)

请尝试以下代码:

from . import my_huey
some_long_calculation_task = my_huey.task()(some_long_calculation)
这种“正常”用法类似于

@my_huey.task()
def my_function(...):
    ...

我很肯定这是正确的答案。
任务
函数本身不是装饰器,而是装饰器工厂。它可能需要一些可选的参数来定制装饰器的行为(尽管如果默认值符合他们的要求,提问者可能不需要传递任何参数)。这似乎是可行的,但现在我遇到了其他错误。我会要求跟进,谢谢。有没有办法添加一个参数,例如,some_long_calculation_task(arg)=my_huey.task()(some_long_calculation(arg))?也许你在找什么?我很确定这是正确的答案。
任务
函数本身不是装饰器,而是装饰器工厂。它可能需要一些可选的参数来定制装饰器的行为(尽管如果默认值符合他们的要求,提问者可能不需要传递任何参数)。这似乎是可行的,但现在我遇到了其他错误。我会要求跟进,谢谢。有没有办法添加一个参数,例如,some_long_calculation_task(arg)=my_huey.task()(some_long_calculation(arg))?也许你在找什么?