5

我正在开发一个 woocommerce rest api,在其中我使用 python 从 mongodb 传递产品数据。我为此写了一个脚本。脚本第一次成功运行并通过了两种产品,但是当我尝试通过更多产品时却失败了。我不知道我在哪里做错了。

显示此错误:

requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=80): 读取超时。(读取超时=5)

脚本:

from woocommerce import API
import os, sys
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parent_dir)


from portal_v2.settings import _MONGO_DB_URI
from pymongo import MongoClient
import os, csv, ast

wcapi = API(
    url="http://localhost/wordpress1",
    consumer_key="ck_******************************************",
    consumer_secret="cs_******************************************",
    wp_api=True,
    version="wc/v1"
)



class Products(object):
    def __init__(self, dbname):
        _client = MongoClient(_MONGO_DB_URI)
        self._database = _client[dbname]
        self.getCollections()

        self.dbname = dbname

    def getCollections(self):
        self.products = self._database['products']

    def getProducts(self):
        product_dict = []
        for each in self.products.find().limit(10):
            product_dict.append({"name": each['name'],"slug": each['name'].replace(' ','').replace('/','') + each['sku'].replace(' ','').replace('/',''),"type": "simple","status": "publish","featured": False,"catalog_visibility": "visible","description": each['description'],"sku": each['sku'],"regular_price": each['mrp'],"sale_price": each['cost_price'],"date_on_sale_from": "","date_on_sale_to": "","purchasable": True,"total_sales": 0,"virtual": False,"downloadable": False,"downloads": [],"download_limit": -1,"download_expiry": -1,"download_type": "standard","external_url": "","button_text": "","tax_status": "taxable","tax_class": "","manage_stock": False,"stock_quantity": None,"in_stock": True,"backorders": "no","backorders_allowed": False,"backordered": False, "sold_individually": False, "weight": each['weight_gms'],"dimensions": {"length": each['length_mm'],"width": each['width_mm'],"height": each['height_mm']},"shipping_required": True,"shipping_taxable": True,"shipping_class": "", "shipping_class_id": 0,"reviews_allowed": True,"average_rating": "0.00","rating_count": 0,"related_ids": [],"upsell_ids": [],"cross_sell_ids": [],"parent_id": 0,"purchase_note": "","categories": [{"id": 9,},{"id": 14,}],"tags": [],"images": [{"src": each['image_url'].replace('dl=0','raw=1'),"name": each['name'],"position": 0}],"attributes": [],"default_attributes": [],"variations": [],"menu_order": 0})

        data = {'create':product_dict}


        print data
        return data

    def updateProducts(self, data):
        wcapi.post("products/batch", data)
        # print wcapi.get("products/?per_page=45").json()


data = Products('xyz').getProducts()
Products('xyz').updateProducts(data)

其中“xyz”是数据库名称。

4

1 回答 1

23

只需增加超时选项。就像是:

wcapi = API(
url="http://localhost/wordpress1",
consumer_key="ck_******************************************",
consumer_secret="cs_******************************************",
wp_api=True,
version="wc/v1",
timeout=10 # the default is 5, increase to whatever works for you.

)

于 2017-02-17T09:02:30.410 回答