获取密钥列表

时间:2018-03-27 00:54:35

标签: python-asyncio asyncsocket python-sockets

当我尝试使用asyncio_redis或aioredis获取键列表的值时,我收到以下错误。我知道它是关于python socket的东西,但无法解决错误。我在这个问题上附上了代码和错误日志。这里的键是一个大字节数组的列表。 get_params_redis由多个进程调用。任何帮助将不胜感激,谢谢!

async def multi_get_key_redis(keys):
    redis = await aioredis.create_redis_pool(
        'redis://localhost')
    result =[]
    for key in keys:
        result.append(await redis.get(key))

        # assert result == await asyncio.gather(*keys)
        # return result
    redis.close()
    await redis.wait_closed()
    print(result)
    return result

def get_params_redis(shapes):
i = -1
params=[]
keys = []
for s in range(len(shapes)):
    keys.append(s)
values = asyncio.get_event_loop().run_until_complete(multi_get_key_redis(keys))
for shape in shapes:
    i = i + 1
    param_np = pc._loads(values[i]).reshape(shape)
    param_tensor = torch.nn.Parameter(torch.from_numpy(param_np))
    params.append(param_tensor)
return params

错误日志:

Process Process-1:
Traceback (most recent call last):
  File "/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/Users/srujithpoondla/largescaleml_project/train_redis.py", line 33, in train_redis
    train_redis_epoch(epoch, args, model, train_loader, optimizer,shapes_len, loop)
  File "/Users/srujithpoondla/largescaleml_project/train_redis.py", line 43, in train_redis_epoch
    params = get_params_redis(shapes_len,loop)
  File "/Users/srujithpoondla/largescaleml_project/common_functions.py", line 76, in get_params_redis
    params = loop.run_until_complete(multi_get_key_redis(keys))
  File "/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 454, in run_until_complete
    self.run_forever()
  File "/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 421, in run_forever
    self._run_once()
  File "/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/base_events.py", line 1395, in _run_once
    event_list = self._selector.select(timeout)
  File "/usr/local/Cellar/python/3.6.4_4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/selectors.py", line 577, in select
    kev_list = self._kqueue.control(None, max_ev, timeout)
OSError: [Errno 9] Bad file descriptor

0 个答案:

没有答案
相关问题