python云平台

2013-03-23 15:40:35 yao_yu_126 阅读数 1991

在学习Python服务开发的过程中,我想找一个比较方便的Python云平台。

在寻找的过程中,我尝试了SAE(新浪云平台),被收费政策弄晕了,不能通过开发者审核,放弃了。

尝试OpenShift,这个平台可以创建3个免费的应用,Python的功能限制少,使用Git进行代码管理,Https进行数据传输,这些都比较好,不过因为它是国外的主机,速度上有点慢。

最后找到了BAE(百度云平台),有如下优点:

  • 使用容易:比SAE的这个平台通过开发者认证容易
  • 创建的应用比较多:首先可以创建10个应用,更多的应用可以再申请
  • 免费额度比较大:对于个人学习用途来说足够了
  • 国内访问速度快(SAE的访问速度也快),OpenShift的访问速度比较慢。

缺点:

  • 大型应用就要付费了
  • Python只使用2.7.2,而且有限制,一些模块和功能都受限。

2016-01-03 17:43:27 testcs_dn 阅读数 8642

做为一个程序员可能在学习技术,了解行业新动态,解决问题时经常需要阅读英文的内容;而像我这样的英文小白就只能借助翻译工具才能理解个大概;不禁经常感慨,英文对学习计算机相关知识太重要了!最近发现IBM的云平台Blumemix,并且提供语言翻译的服务,感觉不错,就拿来研究学习一下;这里就分享一下我的研究学习过程,如何使用Python调用REST API打造自己的在线翻译工具,并演示如何把它发布到云平台上,让每个人都可以通过网络访问使用它。

应用效果展示

您可以通过点击效果图片的链接访问它。


构建一个类似的应用程序的前提条件

一个 Bluemix 帐户,您还没有? 点击这里注册,已经有,点击这里登录

对 HTML(超文本标记语言)的基本了解;

对CSS (层叠样式表)的基本了解;

对JavaScript(一种直译式脚本语言)的基本了解;

对Python 语言的基本了解;

对Python Web编程的基本了解;

我提供了所有必要代码,但对这些技术的基本了解有助于您理解有关的细节。

步骤 1. 创建您的 Python 应用程序

  1. 1、在 Bluemix 用户界面中,转至“仪表板”。

  2. 2、单击创建应用程序

  3. 3、单击 Web,然后按照指导经验来选择入门模板,指定名称以及选择编码方式。

  4. 输入应用程序名称

  5. 应用程序名称是唯一的,接下来要通过它做为二级域名来访问你的应用!
  6. 点击完成之后,需要等待一会儿,然后可以看到下图的界面

  7. 这时就可以访问你刚刚创建的应用了。如下图:

步骤 2. 添加语言翻译服务

  1. 可以通过单击 Bluemix 用户界面中应用程序“概述”上的添加服务或 API,将服务添加到应用程序中。也可以使用 cf 命令行界面。请参阅处理应用程序的可用选项

  2. 在服务列表中选择语言翻译(Language Translation)

  3. 您可以指定服务的名称,也可以使用默认的;

获取服务信息

进入自己的应用程序》概述页面,找到已经添加的服务,点击“显示凭证”,可以查看服务的具体信息:

在浏览器中访问服务URL如下图:


步骤 3. 准备开发环境

有关开发环境搭建的细节,请参考下面的文章:

《Python入门》Windows 7下Python Web开发环境搭建笔记

《Python入门》第一个Python Web程序——简单的Web服务器

步骤 4.编写代码

1、下载初始Hello World示例代码

进入您的应用程序,点击左侧的开始编码,在右侧点击“下载入门模板代码”。


2、使其在本地运行

1、将下载的入门模板代码解压到一个目录,打开命令行窗口,切换到这个目录下

2、执行命令:python server.py

3、在浏览器中访问:http://localhost:8000/

3、编写代码

前台主要AJAX代码:调用后台的翻译的处理程序,实现用户交互

[javascript] view plaincopy
  1. //通过AJAX调用后台翻译程序  
  2. function doExecTrans(){  
  3.     var txt = $("#InputText").val();  
  4.     if (txt == ""){  
  5.         alert("请输入要翻译的文本!");  
  6.         return;  
  7.     }  
  8.       
  9.     $("#ProgressDiv").show();  
  10.     $.ajax({  
  11.        type: "GET",  
  12.        url: "trans",  
  13.        dataType:"json",  
  14.        data: {"txt":txt},  
  15.        success: function(data){  
  16.          $("#ProgressDiv").hide();  
  17.          console.log(data);  
  18.          if (data.error){  
  19.             alert(data.error);  
  20.          }else{  
  21.             $("#OutputText").text(data.text);  
  22.          }  
  23.        },  
  24.        error: function(data){  
  25.          console.log(data);ssss  
  26.          alert( "Error Msg: " + data );  
  27.          $("#ProgressDiv").hide();  
  28.        }  
  29.     });  
  30. }  

后台主要代码:server.py,与翻译服务Web Service交互

import os	#Python的标准库中的os模块包含普遍的操作系统功能
import re	#引入正则表达式对象
import urllib	#用于对URL进行编解码
import sys		#提供了许多函数和变量来处理 Python 运行时环境的不同部分.
import urllib2	#用于模拟HTTP/HTTPS请求

#调试函数,用于输出对象的属性及属性值
def getAllAttrs(obj):
	strAttrs = ''
	for o in dir(obj): 
		strAttrs =strAttrs + o + ' := ' + str(getattr(obj,o)) + '<br />'
		
	return strAttrs;

try:
  from SimpleHTTPServer import SimpleHTTPRequestHandler as Handler
  from SocketServer import TCPServer as Server
except ImportError:
  from http.server import SimpleHTTPRequestHandler as Handler
  from http.server import HTTPServer as Server


#自定义处理程序,用于处理HTTP请求
class TransHTTPHandler(Handler):
	#处理GET请求
    def do_GET(self):
		#页面输出模板字符串
		templateStr = '<html><head><title>pytrans</title></head><body>%s</body></html>'
		# 将正则表达式编译成Pattern对象
		pattern = re.compile(r'/trans\?txt\=(.*)')
		# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
		match = pattern.match(self.path)
		
		if match:
			params = { 'source':'en', 'target':'es', 'text':match.group(1) }        
			surl = 'https://gateway.watsonplatform.net/language-translation/api/v2/translate?' + urllib.urlencode(params)
			resContent = ''
			
			try:
				passman = urllib2.HTTPPasswordMgrWithDefaultRealm() #创建域验证对象
				passman.add_password(None, surl, "翻译服务用户名", "密码") #设置域地址,用户名及密码
				auth_handler = urllib2.HTTPBasicAuthHandler(passman) #生成处理与远程主机的身份验证的处理程序
				opener = urllib2.build_opener(auth_handler) #返回一个openerDirector实例
				urllib2.install_opener(opener) #安装一个openerDirector实例作为默认的开启者。
				response = urllib2.urlopen(surl) #打开URL链接,返回Response对象
				resContent = response.read() #读取响应内容
			except:
				info=sys.exc_info()
				resContent = getAllAttrs(info[0]) + getAllAttrs(info[1]) #获取异常的详细信息
	   
			self.protocal_version = 'HTTP/1.1'	#设置协议版本
			self.send_response(200)	#设置响应状态码
			self.send_header("Content-type", "text/html")	#设置响应头
			self.end_headers()
			self.wfile.write("{\"text\":\"%s\"}" % resContent)	#输出响应内容
		else:
			#/trans 之外的请求,交给底层去处理
			if self.path == "":
				self.path = '/index.html'
				
			fStatic = self.send_head()
			if fStatic:
				try:
					self.copyfile(fStatic, self.wfile)
				finally:
					fStatic.close()


# Read port selected by the cloud for our application
PORT = int(os.getenv('PORT', 8000))
# #改变当前目录到 static 目录
os.chdir('static')

httpd = Server(("", PORT), TransHTTPHandler)
try:
  print("Start serving at port %i" % PORT)
  httpd.serve_forever() ##设置一直监听并接收请求
except KeyboardInterrupt:
  pass #按Ctrl+C退出服务
httpd.server_close()
我们定义的do_GET处理程序只处理/trans请求,/trans 之外的请求,交给底层去处理

步骤 5. 本地运行访问

运行

执行命令:python server.py

访问

在浏览器中访问,查看效果,打开浏览器,输入:http://localhost:8000/



步骤 6. 上传应用程序

登录到 Bluemix™ 后,可以使用 cf push 命令来上传应用程序。

开始之前,您必须:
  1. 1、安装 Cloud Foundry 命令行界面。

    下载 Cloud Foundry 命令行界面


  2. 请根据自己使用的操作系统下载对应的版本;我使用的是Windows 7 64位操作系统,
  3. 下载Binaries版本的不需要安装,直接解压到Windows目录就可以了

  4. 依次点击仪表板》pytrans(您创建的应用程序名称)》开始编码,可以查看属于自己的命令;如下图:

  5. 2、连接到 Bluemix
  6. 打开命令提示符窗口:开始》运行,输入“cmd”,回车
  7. 执行:cf api https://api.ng.bluemix.net,如下图:

  8. 3、登录到 Bluemix
  9. 注意,这里要换成对应你自己账户的命令!
  10. cf login -u ivu4e@qq.com -o ivu4e@qq.com -s ivu4e

4、发出 cf push 命令时,cf 命令行界面将提供使用 buildpack 来构建并运行应用程序的 Bluemix 环境的工作目录。

  1. 从应用程序目录中,输入带有应用程序名称的 cf push 命令。在 Bluemix 环境中,应用程序名称必须是唯一的。
  2. 后面的"-m 512m"是修改应用程序内存配额的,可以不带这个参数,如下图:

  3. 注意:执行cf push前将命令行当前目录切换到您刚刚创建的应用目录,例如我刚刚创建的
    C:\python\pytrans\,cf push 后面的pytrans要替换为您在Bluemix上创建的应用名称。
  4. 提示: 使用 cf push 命令时,cf 命令行界面会将当前目录中的所有文件和目录复制到 Bluemix。确保应用程序目录中只包含必需的文件。
  5. cf push 命令上传应用程序并将其部署到 Bluemix。有关 cf push 的更多信息,请参阅 cf 命令。有关 buildpack 的信息,请参阅使用社区 buildpack

  6. 如果更改了应用程序,可以通过再次输入 cf push 命令来上传这些更改。 cf 命令行界面会使用您先前的选项以及您对提示的响应来通过新的代码段更新应用程序的任何运行中实例。
提示: 您还可以从 Bluemix DevOps Services 上传或部署应用程序。请参阅在 Node.js 中使用 Web IDE 开发Bluemix 应用程序

步骤 7. 做个小小的测试

通过仪表板进入您刚刚创建的应用页面,点击左侧的开始编码,右侧顶部会显示:您的应用程序正在运行。http://pytrans.mybluemix.net/

点击后面的链接访问刚刚发布的应用。


结束语

通过IBM的Bluemix云平台,我们可以轻松的将自己的应用共享到网络上;

创建Web应用之后会自动获得一个用来访问应用的二级域名;

通过应用程序概述中的应用程序运行状况,可以方便的查看和管理应用运行状态;

这里通过一个小例子展示如何将自己的应用发布到IBM的Bluemix云平台上,

如何与IBM云平台上提供的语言翻译服务交互。

如果您有更好的应用或想法,试试通过IBM的Bluemix云平台共享出来吧。

2017-06-20 20:45:14 MosesAaron 阅读数 220

如何通过Python使用云平台

Google

  1. App Engine(flask,django)
  2. Compute Engine
  3. Cloud Storage(File)
  4. Cloud Datastore(NoSQL)
  5. Cloud SQL(SQL)
  6. Cloud Endpoints(Restful)
  7. BigQuery(Hadoop)
  8. Python SDK

Amazon

  1. Elastic Beanstalk
  2. EC2(Elastic Compute)
  3. Redshift(File)
  4. DynamoDB(NoSQL)
  5. RDS(SQL)

    1. EMR(Hadoop)
  6. Python AWS boto

OpenStack

  1. Keystone
  2. Nova
  3. Switft(Object store),Cloud Files
  4. Glance(mirror store)
  5. Cinder(block store)
  6. Horizon(web service)
  7. Neutron(network management)
  8. Heat(serveral clouds)
  9. Ceilometer(control)

什么是云平台

云平台是具有工具集的分布式系统。

为何通过Python使用云平台

分布式计算的误解
1. 网络是可靠的
2. 延迟为零
3. 带宽是无限的
4. 网络是安全的
5. 拓扑结构不会改变
6. 传输成本为零
7. 网络是同构的
使用云平台,将以上问题都交给云平台的维护人员。

2018-04-25 11:52:31 NiYintang 阅读数 2340
import requests
import json
import sys
import random
import time
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
    reload(sys)
    sys.setdefaultencoding(defaultencoding)
#设备ID
DEVICEID = 'xxxxxxxxxx'
#数据流名称
SENSORID = 'xxxxxxxxxx'
#数值
VALUE = {"lon": "118.87104","lat": "31.924043"}       
#APIKEY
APIKEY = 'xxxxxxxxxx'
url = 'http://api.heclouds.com/devices/%s/datapoints'%(DEVICEID)
print (url)
dict = {"datastreams":[{"id":"temp","datapoints":[{"value":50}]}]}
dict['datastreams'][0]['id'] = SENSORID
dict['datastreams'][0]['datapoints'][0]['value'] = VALUE
print (dict)
s = json.dumps(dict)
headers = {
                "api-key":APIKEY,
                "Connection":"close"
           }
r = requests.post(url,headers=headers,data = s)
print (r.headers)
print ('1',20 * '*')
print (r.text)
print ('2',20 * '*')

2018-07-29 19:50:09 qq_39161804 阅读数 228

1,准备

-> Google Chrome浏览器+对应版本的ChromeDriver(谷歌浏览器驱动)

谷歌浏览器驱动下载

对应的v 67.0.3396.99版本的请下载:链接:https://pan.baidu.com/s/1p4ZaGYAwoXmx1JvYTf-ahw 密码:oo6t

-> selenium

    安装方式:

pip install selenium

2,代码

本方案没有验证码识别及破解模块,本人正学习阶段,今后会进行该方面的进一步尝试。

代码中有未完成的模块,但运行不会报错,只能进行自动输入账号和密码,并自动点击登录。

__author__ = 'roohom'
# -*-coding:utf-8-*-

from selenium import webdriver
import requests
import urllib
from bs4 import BeautifulSoup
from selenium.webdriver.common.action_chains import ActionChains #导入鼠标操作
from selenium.webdriver.common.keys import Keys #导入键值操作
import time

myusername = "**********"#帐号
mypassword = "******"#密码
signpage = "http://www.shixiyun.site/back/login/login.do" #签到页
browser = webdriver.Chrome()
browser.get(signpage)
try:
    loginname = browser.find_element_by_id("userName")   #找到账号输入框
    password = browser.find_element_by_id("password")    #找到密码输入框
    MyID = browser.find_element_by_id("student")      #找到登录者身份
    submit = browser.find_element_by_id("schoolFormSubmit")   #找到登录框
    loginname.send_keys(myusername)     #输入账号
    password.send_keys(mypassword)      #输入密码
    time.sleep(10)                      #等待一定的时间

    MyID.click()                     #点击选择的登录者身份

    submit.click()                      #点击登录
    browser.implicitly_wait(5)
    internManage = browser.find_element_by_css_selector('#menu-article > dt').click()
    time.sleep(3)
    weekDiary = browser.find_element_by_css_selector('#menu-article > dd > ul > li:nth-child(4) > a').click()

except:
     print("哎呀,登录失败,emmmmm")

time.sleep(5)
#退出驱动
#browser.close()
#browser.quit()

刚学习,博客写得不是很好,互相交流学习!