我正在尝试编写一个请求处理程序来帮助我以异步模式发送请求。当我使用 Ctrl+D 或 exit() 关闭 python 终端时它会提示
表明sys:1: RuntimeWarning: coroutine was never awaited
import asyncio
import urllib.request
import json
class RequestHandler:
def SendPostRequest(method="post",url=None, JsonFormatData={}):
# Encode JSON
data =json.dumps(JsonFormatData).encode('utf8')
# Config Request Header
req = urllib.request.Request(url)
req.add_header('Content-Type', 'application/json')
# Send request and wait the response
response = urllib.request.urlopen(req,data=data)
return response
async def AsyncSend(method="post",url=None, JsonFormatData=None):
if method == "post":
loop = asyncio.get_event_loop()
task = loop.create_task(SendPostRequest(method="post",url=url,JsonFormatData=JsonFormatData))
###################################
# Example
##### In main python terminal, i run like this:
# from RequestHandler import *
# RequestHandler.AsyncSend(method="post",url="xxxxxx", JsonFormatData={'key':'value'} )
当我点击 Ctrl+D 时,它提示
sys:1: RuntimeWarning: coroutine 'RequestHandler.AsyncSend' was never awaited
难道我就该无视它吗?我不想打电话await
,因为我不在乎这个过程是否成功。
在这个链接“https://xinhuang.github.io/posts/2017-07-31-common-mistakes-using-python3-asyncio.html”中,它说“要在没有await的情况下执行异步任务,请使用循环。 create_task() 和loop.run_until_complete()”,那是错误的吗?