{"id":6852,"date":"2021-08-16T13:46:03","date_gmt":"2021-08-16T20:46:03","guid":{"rendered":"https:\/\/blogs.infoblox.com\/?p=6852"},"modified":"2022-10-21T13:40:19","modified_gmt":"2022-10-21T20:40:19","slug":"turbocharge-your-infoblox-restful-api-calls-part-1","status":"publish","type":"post","link":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/","title":{"rendered":"Turbocharge your Infoblox RESTful API calls (part 1)"},"content":{"rendered":"<h3 class=\"g-lead\">In this multi-part series we provide four ways to vastly improve the performance and efficiency of your calls to the Infoblox REST API.<\/h3>\n<h3>OVERVIEW<\/h3>\n<p>I&#8217;ve spent the last several weeks exploring ways to improve the performance of scripts that leverage the Infoblox NIOS WAPI to make customer DDI automation execute faster. In this multi-part series, we&#8217;ll detail four ways to turbocharge your scripts when making calls to the Infoblox WAPI. Our goals are to provide the following:<\/p>\n<ul>\n<li>Increase performance &#8211; i.e., reduce the time to execute scripts<\/li>\n<li>Achieve greater efficiency<\/li>\n<li>Improve business logic<\/li>\n<\/ul>\n<p>This series will cover these topics:<\/p>\n<ol>\n<li>Use HTTP Keepalive<\/li>\n<li>Use multi-threading<\/li>\n<li>Make bulk updates using the WAPI\u00a0<em>request<\/em>\u00a0object<\/li>\n<li>Implement asynchronous calls<\/li>\n<\/ol>\n<p>Developing this series of articles, we used the following platforms, language and supporting modules:<\/p>\n<ul>\n<li>Infoblox TE-v1425 w\/ NIOS 8.5.2\n<ul>\n<li>Standalone Grid Master<\/li>\n<li>Not running protocol services<\/li>\n<li>No other members in the Grid<\/li>\n<\/ul>\n<\/li>\n<li>Python 3.9.4 on Mac OS X<\/li>\n<li>requests 2.25.1<\/li>\n<li>aiohttp 2.7.4.post0<\/li>\n<\/ul>\n<p>All of the code used in development of this article series is accessible at\u00a0<a href=\"https:\/\/github.com\/ddiguru\/turbocharge_infoblox_api\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/ddiguru\/turbocharge_infoblox_api<\/a><\/p>\n<div class=\"notices red\">\n<h4><strong>WARNING<\/strong><\/h4>\n<p>This article series was written to inspire you to get more performance out of the scripts and automation you develop against your Infoblox Grid. The scripts discussed in this article series can have consequences on a production Infoblox Grid. The programming techniques we cover in this series of articles are extremely powerful and have the potential to send more requests at a faster rate, so there exists the potential to inadvertently overrun the resources of the Grid Master. It is highly recommend you use a test environment thoroughly prior to going to production.<\/p>\n<\/div>\n<h3>HTTP Keepalive<\/h3>\n<p>While enabling HTTP Keepalive is not a programming technique per se, it can improve the performance and efficiency of your automation scripts while interacting with the Infoblox WAPI. What is HTTP Keepalive?<\/p>\n<blockquote><p>HTTP Keepalive, also known as, HTTP persistent connection, is an instruction to the server that allows a single TCP connection to remain open for multiple HTTP requests\/responses between the client and server. Without HTTP Keepalive, the server will close the TCP connection (not session) after each request which can lead to higher page load times. Enabling HTTP Keepalive allows you to serve all web pages or API calls over a single connection which reduces CPU, memory and other resources on your server.<\/p><\/blockquote>\n<p>You might notice the following debug output when using the Python Requests module which indicates new connections are required to the Grid Master.<\/p>\n<pre style=\"padding-left: 40px;\">DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): 192.168.40.60:443\r\nDEBUG:urllib3.connectionpool:https:\/\/192.168.40.60:443 \"GET \/wapi\/v2.11\/grid HTTP\/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:Resetting dropped connection: 192.168.40.60\r\nDEBUG:urllib3.connectionpool:https:\/\/192.168.40.60:443 \"GET \/wapi\/v2.11\/grid HTTP\/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:Resetting dropped connection: 192.168.40.60\r\n<\/pre>\n<p>In the above log snippet, you&#8217;ll notice that the server is dropping the connection between each call to the\u00a0<em>grid<\/em>\u00a0object. Each time the server closes the connection, our script has to reestablish a new connection with the server. Establishing a TCP connection with a web server over TLS is expensive! It&#8217;s several packets just to rebuild the connection and it takes time &#8212; precious time!<\/p>\n<p>HTTP Keepalive is not enabled by default on Infoblox NIOS, and you must explicitly enable it by using CLI command. HTTP Keepalive can be enabled on the Grid Master using the following CLI commands:<code class=\"hljs csharp\"><\/code><\/p>\n<p style=\"padding-left: 40px;\"><code class=\"hljs csharp\"><span class=\"hljs-keyword\">set<\/span> httpd_client keepalive <span class=\"hljs-keyword\">on<\/span><br \/>\n<\/code><\/p>\n<p style=\"padding-left: 40px;\"><code class=\"hljs csharp\"><span class=\"hljs-keyword\">set<\/span> httpd_client keepalivetime <span class=\"hljs-number\">5<\/span><br \/>\n<\/code><\/p>\n<p style=\"padding-left: 40px;\"><code class=\"hljs csharp\"><span class=\"hljs-keyword\">set<\/span> httpd_client maxrequest <span class=\"hljs-number\">2048<\/span><\/code><\/p>\n<div class=\"notices blue\">\n<h4>NOTE: The above CLI commands were issued to the Grid Master. The web server automatically detects the configuration change and is restarted usually within 60 secs.<\/h4>\n<\/div>\n<p>What does this look like when we&#8217;ve enabled HTTP Keepalive on the Infoblox Grid Master?<\/p>\n<pre style=\"padding-left: 40px;\">DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): 192.168.40.59:443\r\nDEBUG:urllib3.connectionpool:https:\/\/192.168.40.59:443 \"GET \/wapi\/v2.12\/grid HTTP\/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:https:\/\/192.168.40.59:443 \"GET \/wapi\/v2.12\/grid HTTP\/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:https:\/\/192.168.40.59:443 \"GET \/wapi\/v2.12\/grid HTTP\/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:https:\/\/192.168.40.59:443 \"GET \/wapi\/v2.12\/grid HTTP\/1.1\" 200 None\r\n<\/pre>\n<p>Much better! We&#8217;re now able to make successive WAPI calls over the same socket connection without it being torn down between calls. This alone will give us improved performance and make our scripts more efficient. See the following Python script used for making these simple sequential calls.\u00a0<a href=\"https:\/\/github.com\/ddiguru\/turbocharge_infoblox_api\/blob\/main\/wapi-grid.py\" target=\"_blank\" rel=\"noopener noreferrer\">wapi-grid.py<\/a><\/p>\n<p>So, what kind of performance gain will I see with HTTP Keepaliave? Your mileage will vary &#8211; I&#8217;ve seen anywhere from 18% to 40% improvement in the performance of my scripts. And that&#8217;s without making any changes to my scripts! The Python Requests module leverages Keepalive by default via the\u00a0<em>urllib3<\/em>\u00a0module, as long as you use the\u00a0<code>requests.Session<\/code>\u00a0in your scripts. To test this, I wrote a simple script that creates 1,024 contiguous 24-bit networks from RFC1918 10.0.0.0\/8. There is nothing fancy about this script &#8212; behind the scenes it&#8217;s making 1,024 POST requests to the WAPI\u00a0<code>network<\/code>\u00a0object one POST request per network that we create. You can view the script used in testing.\u00a0<a href=\"https:\/\/github.com\/ddiguru\/turbocharge_infoblox_api\/blob\/main\/wapi-network.py\" target=\"_blank\" rel=\"noopener noreferrer\">wapi-network.py<\/a><\/p>\n<p>I ran the script against an Infoblox TE-v1425 running NIOS 8.5.2 several times both with and without HTTP Keepalive and got the following results:<\/p>\n<div class=\"simple-responsive-table\">\n<div>\n<table>\n<thead>\n<tr>\n<th>Test<\/th>\n<th>Pass #1<\/th>\n<th>Pass #2<\/th>\n<th>Pass #3<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>w\/o HTTP Keepalive<\/td>\n<td>38.59<\/td>\n<td>39.30<\/td>\n<td>38.89<\/td>\n<\/tr>\n<tr>\n<td>w\/ HTTP Keepalive<\/td>\n<td>31.39<\/td>\n<td>31.72<\/td>\n<td>32.04<\/td>\n<\/tr>\n<tr>\n<td><strong>% improvement<\/strong><\/td>\n<td><strong>18.66%<\/strong><\/td>\n<td><strong>19.29%<\/strong><\/td>\n<td><strong>17.61%<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The amount of performance gain is dependent on the type of RESTful call you&#8217;re making (POST, PUT, GET, DELETE) and the type of WAPI objects you are working with. Additionally, the performance gain is directly tied to how proximal the client is from the Grid Master, i.e. the number of router hops that exist between client and the Grid Master. The farther away the client is (in router hops), the greater the performance improvement. This is just one example of the savings when you perform numerous POST requests on the\u00a0<code>network<\/code>\u00a0object. Try it yourself and see what you get!<\/p>\n<p><strong>Pro Tip #1<\/strong>\u00a0If you are enabling HTTP Keepalive in production, make sure you add this configuration to all Grid Members that will have the potential to be Grid Master. If you are running an HA pair Grid Master, you must add the above configuration change to both node1 and node2 of the HA pair! Additionally, a Grid Master Candidate or GMC could become Grid Master &#8211; so make sure you apply the same configuration to all nodes of your Grid Master Candidate(s) as well!<\/p>\n<p><strong>Pro Tip #2<\/strong>\u00a0If you didn&#8217;t already know &#8211; you can configure the Grid Master Candidate to be a WAPI read-only server. See the checkbox on the Member configuration of your Grid Master Candidate for Read-Only API access. This allows you to direct any WAPI calls that read or fetch (but not write, delete or update) data.<\/p>\n<p>In the next article, we look at making our scripts run even faster over our Grid with Keepalive. We&#8217;ll explore the sequential blocking style of our original scripts and how we might harness concurrency to speed up our original script.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this multi-part series we provide four ways to vastly improve the performance and efficiency of your calls to the Infoblox REST API. OVERVIEW I&#8217;ve spent the last several weeks exploring ways to improve the performance of scripts that leverage the Infoblox NIOS WAPI to make customer DDI automation execute faster. In this multi-part series, [&hellip;]<\/p>\n","protected":false},"author":358,"featured_media":6853,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[3],"tags":[559,16,180,60,131],"class_list":{"0":"post-6852","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-community","8":"tag-development","9":"tag-infoblox","10":"tag-python","11":"tag-wapi","12":"tag-api","13":"entry"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Turbocharge your Infoblox RESTful API calls (part 1)<\/title>\n<meta name=\"description\" content=\"There are ways to optimize performance and efficiency for calls to Infoblox REST API. Learn about four different ways that performance can be improved here.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Turbocharge your Infoblox RESTful API calls (part 1)\" \/>\n<meta property=\"og:description\" content=\"There are ways to optimize performance and efficiency for calls to Infoblox REST API. Learn about four different ways that performance can be improved here.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Infoblox Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-16T20:46:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-21T20:40:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/ddi-guru-turbo-image.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Patrick Piper\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Patrick Piper\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/\"},\"author\":{\"name\":\"Patrick Piper\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/person\\\/ac7cfb5c14c9216ae7cb53acfe37c1db\"},\"headline\":\"Turbocharge your Infoblox RESTful API calls (part 1)\",\"datePublished\":\"2021-08-16T20:46:03+00:00\",\"dateModified\":\"2022-10-21T20:40:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/\"},\"wordCount\":1045,\"publisher\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/ddi-guru-turbo-image.jpg\",\"keywords\":[\"development\",\"Infoblox\",\"Python\",\"WAPI\",\"API\"],\"articleSection\":[\"Community\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/\",\"name\":\"Turbocharge your Infoblox RESTful API calls (part 1)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/ddi-guru-turbo-image.jpg\",\"datePublished\":\"2021-08-16T20:46:03+00:00\",\"dateModified\":\"2022-10-21T20:40:19+00:00\",\"description\":\"There are ways to optimize performance and efficiency for calls to Infoblox REST API. Learn about four different ways that performance can be improved here.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/ddi-guru-turbo-image.jpg\",\"contentUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/ddi-guru-turbo-image.jpg\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/turbocharge-your-infoblox-restful-api-calls-part-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Community\",\"item\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/category\\\/community\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Turbocharge your Infoblox RESTful API calls (part 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\",\"name\":\"infoblox.com\\\/blog\\\/\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\",\"name\":\"Infoblox\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/infoblox-logo-2.svg\",\"contentUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/infoblox-logo-2.svg\",\"width\":137,\"height\":30,\"caption\":\"Infoblox\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/person\\\/ac7cfb5c14c9216ae7cb53acfe37c1db\",\"name\":\"Patrick Piper\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.infoblox.com\\\/wp-content\\\/uploads\\\/avatar_user_358_1628788417-96x96.jpg\",\"url\":\"https:\\\/\\\/blogs.infoblox.com\\\/wp-content\\\/uploads\\\/avatar_user_358_1628788417-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.infoblox.com\\\/wp-content\\\/uploads\\\/avatar_user_358_1628788417-96x96.jpg\",\"caption\":\"Patrick Piper\"},\"description\":\"Patrick has over 24 years of experience in IT networking, with an emphasis on IP Address Management, DNS, and DHCP technologies. He graduated from N.C. State University with a BA in Business Management and was an All-American in Cross Country and Track. During his early work years following graduation, he took his running to the National level at the marathon distance, by qualifying for the 1994 Olympic Trials in just my first Marathon. Today, he appliesy the same hard work ethic and dedication that helped him be successful as an athlete to his IT consultancy. He has followed a well-planned job progression, starting as a systems engineer working with network operating systems and routing technologies. He advanced into consulting, where he learned how to effectively communicate and interact with technical and non-technical personnel on various large-scale IP services projects. In 1995, he founded Netlinx, Inc. originally as a systems integration firm focused on small business networking. Over the last 20 years his focus and emphasis has been on providing professional consulting and development services in the DDI space to large Enterprise firms. In 2012, he joined Wells Fargo &amp; Co. as the technical lead for the DDI Engineering team where he leads design, architecture, and engineering tasks as part of a large DDI reengineering project. In Aug. of 2014, he re-branded Netlinx, Inc. to DDI Guru, LLC, as a top-provider of DDI Engineering, Consulting, and Automation Services company.\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/author\\\/patrick-piper\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Turbocharge your Infoblox RESTful API calls (part 1)","description":"There are ways to optimize performance and efficiency for calls to Infoblox REST API. Learn about four different ways that performance can be improved here.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/","og_locale":"en_US","og_type":"article","og_title":"Turbocharge your Infoblox RESTful API calls (part 1)","og_description":"There are ways to optimize performance and efficiency for calls to Infoblox REST API. Learn about four different ways that performance can be improved here.","og_url":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/","og_site_name":"Infoblox Blog","article_published_time":"2021-08-16T20:46:03+00:00","article_modified_time":"2022-10-21T20:40:19+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/ddi-guru-turbo-image.jpg","type":"image\/jpeg"}],"author":"Patrick Piper","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Patrick Piper","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#article","isPartOf":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/"},"author":{"name":"Patrick Piper","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/person\/ac7cfb5c14c9216ae7cb53acfe37c1db"},"headline":"Turbocharge your Infoblox RESTful API calls (part 1)","datePublished":"2021-08-16T20:46:03+00:00","dateModified":"2022-10-21T20:40:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/"},"wordCount":1045,"publisher":{"@id":"https:\/\/www.infoblox.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/ddi-guru-turbo-image.jpg","keywords":["development","Infoblox","Python","WAPI","API"],"articleSection":["Community"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/","url":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/","name":"Turbocharge your Infoblox RESTful API calls (part 1)","isPartOf":{"@id":"https:\/\/www.infoblox.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/ddi-guru-turbo-image.jpg","datePublished":"2021-08-16T20:46:03+00:00","dateModified":"2022-10-21T20:40:19+00:00","description":"There are ways to optimize performance and efficiency for calls to Infoblox REST API. Learn about four different ways that performance can be improved here.","breadcrumb":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#primaryimage","url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/ddi-guru-turbo-image.jpg","contentUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/ddi-guru-turbo-image.jpg","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/www.infoblox.com\/blog\/community\/turbocharge-your-infoblox-restful-api-calls-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infoblox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Community","item":"https:\/\/www.infoblox.com\/blog\/category\/community\/"},{"@type":"ListItem","position":3,"name":"Turbocharge your Infoblox RESTful API calls (part 1)"}]},{"@type":"WebSite","@id":"https:\/\/www.infoblox.com\/blog\/#website","url":"https:\/\/www.infoblox.com\/blog\/","name":"infoblox.com\/blog\/","description":"","publisher":{"@id":"https:\/\/www.infoblox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infoblox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infoblox.com\/blog\/#organization","name":"Infoblox","url":"https:\/\/www.infoblox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/infoblox-logo-2.svg","contentUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/infoblox-logo-2.svg","width":137,"height":30,"caption":"Infoblox"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/person\/ac7cfb5c14c9216ae7cb53acfe37c1db","name":"Patrick Piper","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/avatar_user_358_1628788417-96x96.jpg","url":"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/avatar_user_358_1628788417-96x96.jpg","contentUrl":"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/avatar_user_358_1628788417-96x96.jpg","caption":"Patrick Piper"},"description":"Patrick has over 24 years of experience in IT networking, with an emphasis on IP Address Management, DNS, and DHCP technologies. He graduated from N.C. State University with a BA in Business Management and was an All-American in Cross Country and Track. During his early work years following graduation, he took his running to the National level at the marathon distance, by qualifying for the 1994 Olympic Trials in just my first Marathon. Today, he appliesy the same hard work ethic and dedication that helped him be successful as an athlete to his IT consultancy. He has followed a well-planned job progression, starting as a systems engineer working with network operating systems and routing technologies. He advanced into consulting, where he learned how to effectively communicate and interact with technical and non-technical personnel on various large-scale IP services projects. In 1995, he founded Netlinx, Inc. originally as a systems integration firm focused on small business networking. Over the last 20 years his focus and emphasis has been on providing professional consulting and development services in the DDI space to large Enterprise firms. In 2012, he joined Wells Fargo &amp; Co. as the technical lead for the DDI Engineering team where he leads design, architecture, and engineering tasks as part of a large DDI reengineering project. In Aug. of 2014, he re-branded Netlinx, Inc. to DDI Guru, LLC, as a top-provider of DDI Engineering, Consulting, and Automation Services company.","url":"https:\/\/www.infoblox.com\/blog\/author\/patrick-piper\/"}]}},"_links":{"self":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/6852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/users\/358"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/comments?post=6852"}],"version-history":[{"count":3,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/6852\/revisions"}],"predecessor-version":[{"id":8206,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/6852\/revisions\/8206"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/media\/6853"}],"wp:attachment":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/media?parent=6852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/categories?post=6852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/tags?post=6852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}