python - 如何使此功能非阻塞?
问题描述
我需要使函数 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
为您轮询阻塞函数调用,因此您可以生成一个单独的线程来执行该函数。您的协程应该是非阻塞的,可以通过轮询该线程并获得结果的方式。这可能是一个相当复杂的实现。
推荐阅读
- python - 如何将信息保存在txt文件中
- oracle - kafka Cassandra接收器连接器中的ClassCastException
- google-drive-api - 如何使用 google drive api v3 读取文本文件的内容
- xamarin.forms - 通过容器进行依赖注入
- javascript - 无法使用 RxJS 的 switchMap 获取第一个 HTTP 请求的结果
- android - 如何在android中设计可以水平和垂直滚动的2D Rubic网格正方形
- java - 为不同的输入模拟参数返回不同的值
- python - 我想为那些小睡到一个新变量的人以及那些没有小睡到另一个新变量的人隔离“夜间就寝时间”列
- java - Android Studio 中操作栏的 java.lang.NullPointerException
- php - 找不到类“App\Http\Controllers\rimdetails”?