Есть ли объект xml-rpc для обработки 508 ошибок? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть скрипт на python, который отправляет контент на сайт Wordpress через wordpress_xmlrpc библиотеку .

Это часть моего кода, которая отправляет захваченное содержимое на веб-сайт:

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods.posts import EditPost

wp = Client("http://example.com/xmlrpc.php", '#####', '######')
wp.call(GetPosts())
wp.call(GetUserInfo())

post = WordPressPost()
post.title = My_title
post.content = post_content_var
post.terms_names = {'category': ['something']}
post.post_status = "publish"
post.comment_status = "open"
post.id = wp.call(NewPost(post))
print(">>>> The Post ID: ", post.id)

Моя проблема со стороны сервера. Иногда веб-сервер не хватает ресурсов и отвечает с ошибкой HTTP 508. Когда код xml-rpc пытается отправить сообщение, но сервер недоступен, сообщение теряется.

Есть ли способ обнаружить 508 ошибок и обработать их?

1 Ответ

1 голос
/ 27 апреля 2019

Когда сервер отвечает кодом ошибки HTTP, xmlrpc.client вызывает xmlrpc.client.ProtocolError исключение .Вы можете поймать это исключение и проверить код ошибки.Затем вы можете повторить запрос, возможно, немного подождав:

import time
from xmlrpc.client import ProtocolError

while True:
    try:
        post.id = wp.call(NewPost(post))
    except ProtocolError as pe:
        if pe.errcode != 508:
            raise
        print("Wordpress site out of resources, trying again after waiting")
        time.sleep(1)
    else:
        break
...