我正在尝试编写一个请求处理程序来帮助我以异步模式发送请求。当我用 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 …Run Code Online (Sandbox Code Playgroud) 我在我的机器内安装了gettyimages/spark dockerimage 和。jupyter/pyspark-notebook
但是由于gettyimage/sparkpython 版本为 ,3.5.3而jupyter/pyspark-notebookpython 版本为3.7,会出现以下错误:
例外:worker 中的 Python 版本 3.5 与驱动程序 3.7 中的版本不同,PySpark 无法使用不同的次要版本运行。请检查环境变量 PYSPARK_PYTHON 和 PYSPARK_DRIVER_PYTHON 是否设置正确。
因此,我尝试升级gettyimage/spark镜像的 python 版本或降级 docker 镜像的 python 版本jupyter/pyspark-notebook来修复它。
jupyter/pyspark-notebook先降级python版本:我用来conda install python=3.5降级docker镜像的python版本 jupyter/pyspark-notebook。然而,在我这样做之后,我的jupyter笔记本无法连接到任何单机ipynb,并且内核似乎已死。另外,当我conda再次输入时,它显示了我conda command not found,但是 python 终端运行良好
我比较了降级之前和之后的 sys.path
['','/usr/local/spark/python','/usr/local/spark/python/lib/py4j-0.10.7-src.zip','/opt/conda/lib/python35.zip' , '/opt/conda/lib/python3.5', '/opt/conda/lib/python3.5/plat-linux', '/opt/conda/lib/python3.5/lib-dynload', '/ opt/conda/lib/python3.5/site-packages']
['','/usr/local/spark/python','/usr/local/spark/python/lib/py4j-0.10.7-src.zip','/opt/conda/lib/python37.zip' ,'/opt/conda/lib/python3.7','/opt/conda/lib/python3.7/lib-dynload','/opt/conda/lib/python3.7/site-packages']
我认为或多或少是正确的。那么为什么我无法使用我的jupyter笔记本电脑连接到狗舍呢?
URL的一般格式是
scheme://domain:port/path?query_string#fragment_id
虽然域(以及URL的其他可能部分)可能包含Unicode字符,但在下文中我们假设仅使用ASCII字符.此外,我们假设
scheme只包含字母a–z和A–Z;domain不包含:,?,#或/;port是一个自然数,:port是可选的;path不包含?或#,path是可选的;query_string不包含#,?query_string是可选的;fragment_id可以包含任意字符,#fragment_id是可选的.
这是我的代码:
@urls = (
"http://www.example.com/",
"http://www80.local.com:80/",
"https://www.ex221.ac.uk:442/perl/rulez?all+q#all.time");
foreach (@urls) {
print "URL: $_\n";
($scheme,$domain,$port,$path,$query,$fragment) = (/(.)(.)(.)(.)(.)(.)/);
print "SCHEME: $scheme, DOMAIN: $domain, PORT: $port\n";
print "PATH: $path\n"; print "QUERY: $query\n";
print "FRAGMENT: $fragment\n\n";
}
Run Code Online (Sandbox Code Playgroud)
如何更改上面代码中的正则表达式,以便正确分隔URL的五个组件并使用示例URL测试它是否按预期工作.