我很难在 aiohttp 上找到很多文档,尤其是最近的文档。我一直反复浏览相同的页面,主要是github问题和文档,找不到解决我问题的关键。
问题在于,在处理大量请求时,待处理的请求在发送之前会超时。
这是由于请求的( session.get())默认超时为5分钟,该超时从等待时间开始算起,而不是从我真正理解的请求开始算起。 因此,我之所以被阻止,是因为保留固定的超时时间将取消(超时)该时间之后的所有待处理请求或将超时设置为 None 会使程序等待在无响应的网站上无限期。 this issue中也出现了同样的问题,但我没有解决方法。
这是我失败的代码:
//Initiate Genre Menu
LinearLayout menu = getActivity().findViewById(R.id.genre_menu);
//Initiate GenreMenuSwitches class
GenreMenuSwitches genresOptions = new GenreMenuSwitches(getActivity());
// Make Genre Button open menu on click
ImageView genre_button = (ImageView) getActivity().findViewById(R.id.genre_options);
genre_button.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v) {
modifiedGames.clear();
menu.setVisibility(View.VISIBLE);
((ViewGroup) getActivity().findViewById(R.id.genre_menu)).getLayoutTransition()
.enableTransitionType(LayoutTransition.CHANGING);
menu.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;
menu.getLayoutParams().width= ViewGroup.LayoutParams.MATCH_PARENT;
updateUI(modifiedGames);
}
});
// Set Menu's Confirm Button to hide menu and update UI
Button confirm_button2 = getActivity().findViewById(R.id.menu_reset);
confirm_button2.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v) {
/*((ViewGroup) getActivity().findViewById(R.id.genre_menu)).getLayoutTransition()
.enableTransitionType(LayoutTransition.CHANGING);
menu.getLayoutParams().height= 100;
menu.getLayoutParams().width= 200;
menu.setVisibility(View.GONE);*/
Log.v("Options Size1", "" + genresOptions.genreChosen.size());
if (genresOptions.genreChosen.size() != 0) {
for (int i = 0; i < games.size(); i++) {
ArrayList<Integer> currentGamesGenre = games.get(i).getGenres();
outer: for (int x = 0; x < currentGamesGenre.size(); x++) {
for (int y = 0; y < genresOptions.genreChosen.size(); y++) {
if (currentGamesGenre.get(x) == genresOptions.genreChosen.get(y) ) {
modifiedGames.add(games.get(i));
break outer;
}
}
}
}
Log.v("Options Size2", "" + genresOptions.genreChosen.size());
Log.v("Modified Size", "" + modifiedGames.size());
updateUI(modifiedGames);
}
}
});
我尝试将TCPConnector limit设置为None,但没有成功。
我看到有些人在谈论使用asyncio.wait而不是asyncio.gather,但是正如上面显示的问题3203所示,没有成功。
我尝试为每个请求设置一个ClientSession,但没有成功,但这可能是因为我缺乏理解。
感谢您的指导。