Ich arbeite an einer Woocommerce-Rest-API, in der ich die Produktdaten von Mongodb mit Python übergebe. Dazu habe ich ein Skript geschrieben. Beim ersten Mal wurde das Skript erfolgreich ausgeführt und zwei Produkte bestanden, aber als ich versuchte, mehr Produkte zu übergeben, schlägt es fehl. Ich weiß nicht, wo ich es falsch mache.
Zeigt diesen Fehler:
Requests.Exceptions.ReadTimeout: HTTPConnectionPool(host=”localhost”, Port=80): Zeitüberschreitung beim Lesen. (Zeitüberschreitung lesen=5)
Skript:
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("https://stackoverflow.com/",'') + each['sku'].replace(' ','').replace("https://stackoverflow.com/",''),"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)
wobei „xyz“ der Datenbankname ist.