python-3.x - 属性错误: 'module' object has no attribute 'ensure_future'

标签 python-3.x asynchronous asyncsocket python-asyncio

您好,我正在使用 python asyncio 编写一个 n/w 绑定(bind)服务器应用程序,它可以接受 post 请求。

在发布请求中我接受符号参数

请告诉我处理 n/w 绑定(bind)应用程序的最佳方法。我通过向另一个 Web api 发送 post 请求来收集数据。

以下是代码:

import asyncio
import aiohttp
import json
import logging

# async def fetch_content(url, symbols):
# yield from  aiohttp.post(url, symbols=symbols)

@asyncio.coroutine
def fetch_page(writer, url, data):
   response = yield from aiohttp.post(url, data=data)
   resp = yield from response.read_and_close()
   print(resp)
   writer.write(resp) 
   return           


@asyncio.coroutine
def process_payload(writer, data, scale):
   tasks = []
   data = data.split('\r\n\r\n')[1]
   data = data.split('\n')
   data = [x.split(':') for x in data]
   print(data)
   data = {x[0]: x[1] for x in data}
   print(data)                 
   # data = data[0].split(':')[1]
   data = data['symbols']
   print(data)
   data = data.split(',')
   data_len = len(data)
   data_first = 0
   data_last = scale
   url = 'http://xxxxxx.xxxxxx.xxx/xxxx/xxxx'
   while data_last < data_len:
       tasks.append(asyncio.ensure_future(fetch_page(writer, url,{'symbols': ",".join(data[data_first:data_last])})))
       data_first += scale
       data_last += scale 

   tasks.append(asyncio.ensure_future(fetch_page(writer, url,{'symbols': ",".join(data[data_first:data_last])})))
   loop.run_until_complete(tasks)    
   return 

@asyncio.coroutine
def process_url(url):
    pass

@asyncio.coroutine
def echo_server():
  yield from asyncio.start_server(handle_connection, 'xxxxxx.xxxx.xxx', 3000)

@asyncio.coroutine
def handle_connection(reader, writer):
   data = yield from reader.read(8192)

   if data:
        message =  data.decode('utf-8')
        print(message)
        yield from process_payload(writer, message, 400)

   writer.write_eof()   
   writer.close()


#url = 'http://XXXXXXX.xxxxx.xxx/xxxx/xxxxxx/xxx'
data = {'symbols': 'GD-US,14174T10,04523Y10,88739910,03209R10,46071F10,77543110,92847N10'}

loop = asyncio.get_event_loop()
loop.run_until_complete(echo_server())
try:
    loop.run_forever()
finally:
    loop.close()

但我收到以下错误:

future: <Task finished coro=<handle_connection() done, defined at        fql_server_async_v2.py:53> exception=AttributeError("'module' object has no   attribute 'ensure_future'",)>
Traceback (most recent call last):
File "/home/user/anugupta/lib/python3.4/asyncio/tasks.py", line 234, in _step
result = coro.send(value)
File "fql_server_async_v2.py", line 60, in handle_connection
yield from process_payload(writer, message, 400)
File "/home/user/anugupta/lib/python3.4/asyncio/coroutines.py", line 141, in coro
res = func(*args, **kw)
File "fql_server_async_v2.py", line 41, in process_payload
tasks.append(asyncio.ensure_future(fetch_page(writer, url,  {'symbols':",".join(data[data_first:data_last])})))
AttributeError: 'module' object has no attribute 'ensure_future'
^CTraceback (most recent call last):
File "fql_server_async_v2.py", line 72, in <module>
loop.run_forever()
File "/home/user/anugupta/lib/python3.4/asyncio/base_events.py", line 236,  in run_forever
self._run_once()
File "/home/user/anugupta/lib/python3.4/asyncio/base_events.py", line 1017, in _run_once
event_list = self._selector.select(timeout)
File "/home/user/anugupta/lib/python3.4/selectors.py", line 424, in select
fd_event_list = self._epoll.poll(timeout, max_ev)

最佳答案

ensure_future 已在 asyncio 3.4.4 中添加,早期版本请使用 async

虽然async现在已被弃用,但它将在未来得到支持。

关于python-3.x - 属性错误: 'module' object has no attribute 'ensure_future' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33473140/

相关文章:

python - 属性错误 : 'PyxImporter' object has no attribute 'find_spec' with Pandas/BigQuery

python-3.x - `new_root.mainloop()` 不会使主窗口无响应

javascript - Redux thunk 获取返回未定义

angularjs - Protractor :WAITING方法不起作用

javascript - Angularjs 种子中的index.html 和index-async.html 有什么区别?

objective-c - GCDAsyncUdpSocket 无法针对 iOS 进行编译

c++ - ASIO io_service 问题多次运行

python - 在循环中将字典附加到 Pandas 数据框

python-3.x - cython 编译但没有生成 pyd 文件

php - 非阻塞套接字 : Are messages queued?