繁体   English   中英

如何使此功能无阻塞?

[英]How to make this function non-blocking?

我需要使函数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

好吧,这真是令人讨厌。 您必须将此函数建模为协程。 但是,由于您不能依靠事件循环为您轮询对send_settings的阻塞函数调用, send_settings可以生成一个单独的线程来执行该函数。 您的协程应该是非阻塞的,可以轮询该线程并获得结果。 这可能是一个相当复杂的实现。

通过loop.run_in_executor()解决了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM