要触发更新,您必须在浏览器中访问网址。这个脚本是在shell中完成的:
#!/bin/bash
# Bash to initiate Solr Delta Import Handler
# Setup Variables
hostName=localhost
portNum=8080
SOLRPATH=/solr
SOLR='delta-import&clean=false'
STATUS='dataimport?command=status'
urlCmd='http://${hostName}:${portNum}${SOLRPATH}/dataimport?command=${SOLRCMD}"
# Operations
curl $URLCMD
我试图用Python写这个,这是我得到了多远:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Setup Variables
hostName='localhost'
portNum='8080'
SOLRPATH='/solr'
SOLRCMD='delta-import&clean=false'
STATUSCMD='dataimport?command=status'
urlCmd='http://${hostName}:${portNum}${SOLRPATH}/dataimport?command=${SOLRCMD}'
# Alternative to Curl {URLCMD}
基本上我有两个问题:
答案 0 :(得分:3)
首先,在Python中使用以下一种字符串格式:
urlCmd='http://{0}:{1}{2}/dataimport?command={3}'.format(hostName,portnum, SOLRPATH, SOLRCMD)
#or
urlCmd='http://%s:%s%s/dataimport?command=%s' % (hostName,portnum, SOLRPATH, SOLRCMD)
虽然python中有pycurl使用libcurl,但如果希望脚本保持可移植性,则应使用urllib2
之类的内置模块来访问您生成的URL。
import urllib2
req = urllib2.urlopen(urlCmd)
现在您可以对您的请求做几件事:
req.close req.fileno req.getcode req.headers req.msg
req.read req.readlines req.code req.fp req.geturl
req.info req.next req.readline req.url
虽然大部分方法都是不言自明的,但请参阅urllib2 docs以获取有关其作用的详细说明。
答案 1 :(得分:2)
- 到目前为止我的python代码是否正常?
醇>
不,不是。请看一下Python中的字符串格式。
试试这个:
...
urlCmd='http://%s:%d%s/dataimport?command=%s' % (hostName, portNum, SOLRPATH, SOLRCMD)
- python中Curl的简单替代是什么?该事件通常只是通过访问URL来触发,但我不知道如何在Python中完成此操作。
醇>
尝试urllib
模块:
import urllib
urllib.urlopen(url)