Python restkit模块连接返回错误

时间:2015-12-15 22:29:32

标签: python-2.7 rest

我正在尝试使用我在网上找到的脚本(https://confluence.atlassian.com/display/DOCSPRINT/The+Simplest+Possible+JIRA+REST+Examples)可能已有5年以上的时间来访问Jira REST API。我在Pyhton 2.7中安装了所有模块。但是,在运行脚本时,我收到一条错误,即无法导入SimplePool。完成 Goodiligence (Google搜索)后,我发现在restkit 4.2.2(我已经安装的版本)中不推荐使用SimplePool。所以,我找到的文档(http://pydoc.net/Python/restkit/2.3.0/restkit.pool.simple/)说要使用TConnectionManager(我没有成功)。我仍然得到类似的错误。所以,我偶然发现了另一个文档(http://benoitc.github.io/restkit/pool.html),它说要使用ConnectionPool,我仍然会收到类似的错误。我很欣赏任何指示。这是我的代码:

import simplejson as json
from restkit import * #added this line after finding the last document
from restkit import Resource, BasicAuth, request
from socketpool import ConnectionPool

SimplePool = ConnectionPool


def rest_test(server_base_url, user, password, issue_key):
    '''
    Use restkit to make a REST request to JIRA
    '''
    verbose = False

    # A pool of connections
    pool = SimplePool(factory=Connection)


    # This sends the user and password with the request.
    auth = BasicAuth(user, password)

    resource_name = "issue"
    complete_url = "%s/rest/api/latest/%s/%s" % (server_base_url,   resource_name, issue_key)
    resource = Resource(complete_url, pool_instance=pool, filters=[auth])

    try:
        response = resource.get(headers = {'Content-Type' : 'application/json'})
    except Exception,ex:
        # ex.msg is a string that looks like a dictionary
        print "EXCEPTION: %s " % ex.msg
        return

    # Most successful responses have an HTTP 200 status
    if response.status_int != 200:
        print "ERROR: status %s" % response.status_int
        return

    # Convert the text in the reply into a Python dictionary
    issue = json.loads(response.body_string())

    # Pretty-print the JSON
    if verbose:
        print json.dumps(issue, sort_keys=True, indent=4)

    # The properties of the issue include:
    # self, html, key, transitions, expand, fields

    print "Issue key: %s" % issue['key']

    fields = issue['fields']
    for field_name in fields:
        field_object = fields[field_name]
        print "Field %s = %s" % (field_name, field_object['type'])
        # The type of the value of a field depends on the type of the field
        if field_name in ["summary"]:
            print "  Value = %s" % field_object['value']

if __name__ == '__main__':
    user = 'myuname'
    password = '*****'
    server_url = 'http://jira.mysite.com/'
    issue_key = 'JRA-219'

    rest_test(server_url, user, password, issue_key)

这是返回的错误:

File "simplest_client.py", line 30, in rest_test 
pool = SimplePool()
TypeError: __init__() takes at least 2 arguments (1 given)
EXCEPTION: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><status><status-code>404</status-code><message>null for uri: http://jira.mysite.com//rest/api/latest/issue/JRA-219</message></status>

0 个答案:

没有答案