首页 > 解决方案 > 如何使此功能非阻塞?

问题描述

我需要使函数 s_settings 不停止程序,我在异步函数中调用此函数,在set_settings我将数据发送到服务器时从服务器获取数据send_settings。我不能使方法(set_settings & send_settings)异步。但我需要使这个功能非阻塞


def s_settings(id, _user_settings, all_settings):
    if 'category' in set_settings(str(id)):
        _user_settings[str(id)] = set_settings(str(id)) # Get from the Server
    print(user_settings)    
    _user_settings[str(id)]['category'].append(
        all_settings[str(id)]['category'])
    _user_settings[str(id)]['time_to_receive'].append(
        all_settings[str(id)]['time_to_receive'])
    _user_settings[str(id)]['language'].append(all_settings[str(id)]['language'])
    send_settings(_user_settings[str(id)], str(id)) # Send to the server

标签: pythonpython-3.xasynchronous

解决方案


好吧,那真是太可惜了。您必须将此函数建模为协程。但是由于您不能依赖事件循环来send_settings为您轮询阻塞函数调用,因此您可以生成一个单独的线程来执行该函数。您的协程应该是非阻塞的,可以通过轮询该线程并获得结果的方式。这可能是一个相当复杂的实现。


推荐阅读