手动调用Flask socketio事件处理程序

时间:2019-02-05 15:02:00

标签: flask flask-socketio

我有一个带有flask-socketio装饰器的函数。在我的应用程序的一部分中,我正在使用celery,在此过程中,我想调用装饰器下面的函数

clear()

问题是该事件在内部使用current_user,我该如何模拟常规调用?只是为了提高代码效率,所以我不必在celery任务中重新创建完全相同的功能。

我认为是这样的:

@socketio.on('Example')
@authenticated_only                            
def example(data):
    ...

但是我不确定该解决方案,我什至不尝试

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

def basic_example(data, user):
    # do everything here

@socketio.on('Example')
@authenticated_only                            
def example(data):
    basic_example(data, current_user)

@celery.task()
def celery_task:
    user = User.query.filter...
    basic_example(data, user)