我将net 4库移植到net-core 1.0.0-preview 2
在开发我的net-core库时使用Stackexchange.Redis版本1.2.1,在net 4版本中使用1.2.0。
在net 4中,我的库在调用Redis命令时从未失败。
在net-core中,我随机收到此错误:
def build_table():
...
#stuff that take time
stuff = ...
...
Clock.schedule_once(lambda dt: build_ui_table(stuff)) #since you can use the UI only from the main thread
threading.Thread(target=build_table).start()
更新我使用默认配置(连接超时,连接重试等)
UPDATE 添加了保持活动配置但仍然失败
有什么想法吗?
答案 0 :(得分:1)
解决方案:将SyncTimeout配置更新为10000.尝试使用5000并失败,然后使用10000并修复。默认值为1000。
答案 1 :(得分:1)
更新的SyncTimeout不是一个好选项,因为你的redis命令运行速度非常慢 超时的原因是线程池中的.net-core默认线程数太低。
只需在环境变量中设置maxThreads。
例如:
ComPlus_ThreadPool_ForceMaxWorkerThreads 1000 ComPlus_ThreadPool_ForceMinWorkerThreads 50
然后以管理员身份运行应用程序(允许应用程序读取系统环境变量)
对我有用
答案 2 :(得分:0)
您是否尝试过提升可用线程? (注意,这不是来自.Net核心项目,因此我不能100%确定语法是否相同。)
我在Global.asax.cs
中的{{1}}方法中有以下内容{{1}}
答案 3 :(得分:0)
我在ASP MVC .NET Core 2.1项目中使用Microsoft.Extensions.Caching.Redis(2.1.2),并且在从服务pip install -r requirements.txt
调用同步方法GetString(key)
时也具有相同的TimeoutException。解决方案是调用异步方法:
IDistributedCache
问题不再发生。