工作中,要将一个文本数据,一个一个请求某个接口。手动请求太慢了,就用了spark的知识,进行了批量处理。网友可以借鉴一下。

直接上代码吧
test.py
# from src.helper import request_helper
from pyspark.sql import SparkSession
import http_helper
#从text 文件中获得json数据
def getJsonData():
# 构建SparkSession实例对象
spark = SparkSession.builder \
.appName("SparkSessionExample") \
.master("local") \
.getOrCreate()
# 获取SparkContext实例对象
sc = spark.sparkContext
rdd = sc.textFile("data")
# 查看RDD数据的行数和第一行数据
print("数据的总量为:", rdd.count())
line_rdd = rdd.map(lambda line: line.split(' '))
list = line_rdd.collect()
return list
def requestHttp(list):
for i, val in enumerate(list):
json = {
"param": [
{
"id": val[1],
"region": val[0],
"type": 0
}
]
}
# http_helper.post("http://127.0.0.1:8888/time", json)
http_helper.post("http://10.100.192.211:8080/client/config/update/plan/region", json)
if __name__ == '__main__':
list = getJsonData()
requestHttp(list)
http_helper.py
import requests
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
headers = {"Content-Type": "application/json", 'User-Agent': user_agent}
def get(url):
r = requests.get(url, headers=headers)
print(r.text)
return r.text
def post(url, json):
r = requests.post(url, json=json, headers=headers)
print(json, r.text)
main.py
写脚本的时候,用来测试的,看是否可以正常访问接口
'''
初始化:所有的Flask都必须创建程序实例,
web服务器使用wsgi协议,把客户端所有的请求都转发给这个程序实例
程序实例是Flask的对象,一般情况下用如下方法实例化
Flask类只有一个必须指定的参数,即程序主模块或者包的名字,__name__是系统变量,该变量指的是本py文件的文件名
'''
from flask import Flask, request
import datetime
server = Flask(__name__)
@server.route('/time', methods=['post', 'get'])
def get_time():
data = request.get_json()
print("得到的数据为:", data)
now = str(datetime.datetime.now()) # 把当前时间转换成字符串
return "当前的时间是:%s" % now
server.run(port=8888)
run,py
这个类在本次脚本中没有用到,是上一个demo项目。Python后台项目demo
from waitress import serve
import main
serve(main.server, host='0.0.0.0', port=8080)
网友评论