# US 11,907,142 B2 · Configuring polling times for software applications

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,142 B2
- Document ID: US11907142B2
- Status: Granted
- Kind: B2
- Application number: 17/592,739
- Filed: 2022-02-04
- Published: 2023-08-10
- Granted: 2024-02-20
- Earliest claimed: 2022-02-04
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Brian Gallagher; Cathal O'Connor
- Web page: https://patentgrep.com/patent/US11907142B2

## CPC

- G06F 13/22: using successive scanning, e.g. polling (G06F13/24 takes precedence)
- G06F 9/4498: {Finite state machines}
- G06F 9/54: Interprogram communication
- G06F 9/541: {via adapters, e.g. between incompatible applications}
- G06N 20/00: Machine learning
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Excessive polling that may result in wasted computing resources and unnecessary network traffic can be avoided using some techniques described herein. In one example, a method can include obtaining historical data indicating execution times associated with computing operations. The method can also include determining polling times to assign to the computing operations by applying a model to the historical data. The method may also include configuring a software application to implement the polling times in relation to polling processes for transmitting requests to execute the computing operations to one or more destinations.

## Claims

### Claim 1

A non-transitory computer-readable medium comprising program code that is executable by a processor for causing the processor to:
obtain historical data indicating execution times associated with a plurality of computing operations;
determine a plurality of polling times to assign to the plurality of computing operations based on the historical data, wherein each polling time of the plurality of polling times is a respective delay period in which to wait between transmitting consecutive requests to execute a respective computing operation among the plurality of computing operations; and
configure a software application to implement the plurality of polling times in relation to a plurality of polling processes for transmitting requests to execute the plurality of computing operations to one or more destinations.

### Claim 2 (depends on 1)

The non-transitory computer-readable medium of claim 1, wherein the execution times each indicate a respective difference between a start time and a completion time for executing a respective computing operation of the plurality of computing operations during a prior time period.

### Claim 3 (depends on 1)

The non-transitory computer-readable medium of claim 1, the one or more destinations being external to the software application.

### Claim 4 (depends on 1)

The non-transitory computer-readable medium of claim 1, wherein the software application includes a state machine configured to execute first state logic in a first state and second state logic in a second state, the first state logic being configured to execute a first polling process involving transmitting a first set of consecutive requests to one or more application programming interfaces (APIs) for implementing a first computing operation of the plurality of computing operations, the second state logic being configured to execute a second polling process involving transmitting a second set of consecutive requests to the one or more APIs for implementing a second computing operation of the plurality of computing operations, and further comprising program code that is executable by the processor for causing the processor to configure the software application to implement the plurality of polling times by:
configuring the first polling process to pause for a first polling time of the plurality of polling times between the first set of consecutive requests; and
configuring the second polling process to pause for a second polling time of the plurality of polling times between the second set of consecutive requests, the second polling time being different from the first polling time.

### Claim 5 (depends on 4)

The non-transitory computer-readable medium of claim 4, wherein the first computing operation is a first type of computing operation, and the second computing operation is a second type of computing operation that is different from the first type of computing operation.

### Claim 6 (depends on 4)

The non-transitory computer-readable medium of claim 4, wherein the first computing operation is a particular computing operation configured with a first parameter value, and the second computing operation is the particular computing operation configured with a second parameter value.

### Claim 7 (depends on 6)

The non-transitory computer-readable medium of claim 6, wherein the first parameter value is a first value of a parameter and the second parameter value is a second value of the parameter, the second value being different than the first value.

### Claim 8 (depends on 1)

The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the processor for causing the processor to:
determine the plurality of polling times using a model, wherein the model is a machine-learning model configured using the historical data.

### Claim 9 (depends on 8)

The non-transitory computer-readable medium of claim 8, further comprising program code that is executable by the processor for causing the processor to train the machine-learning model using the historical data.

### Claim 10 (depends on 1)

The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the processor for causing the processor to:
determine the plurality of polling times using a model, wherein the model is a time-series clustering model configured to:
generate a plurality of clusters corresponding to the plurality of computing operations; and
assign a respective polling value to each cluster of the plurality of clusters.

### Claim 11 (depends on 1)

The non-transitory computer-readable medium of claim 1, further comprising program code that is executable by the processor for causing the processor to configure the software application to implement the plurality of polling times by updating a configuration file for the software application based on the plurality of polling times.

### Claim 12

A method comprising:
obtaining, by one or more processors, historical data indicating execution times associated with a plurality of computing operations;
determining, by the one or more processors, a plurality of polling times to assign to the plurality of computing operations based on the historical data, wherein each polling time of the plurality of polling times is a respective delay period in which to wait between transmitting consecutive requests to execute a respective computing operation among the plurality of computing operations; and
configuring, by the one or more processors, a software application to implement the plurality of polling times in relation to a plurality of polling processes for transmitting requests to execute the plurality of computing operations to one or more destinations.

### Claim 13 (depends on 12)

The method of claim 12, wherein the execution times each indicate a respective difference between a start time and a completion time for executing a respective computing operation of the plurality of computing operations during a prior time period.

### Claim 14 (depends on 12)

The method of claim 12, the one or more destinations being external to the software application.

### Claim 15 (depends on 12)

The method of claim 12, wherein the software application includes a state machine configured to execute first state logic in a first state and second state logic in a second state, the first state logic being configured to execute a first polling process involving transmitting a first set of consecutive requests to one or more application programming interfaces (APIs) for implementing a first computing operation of the plurality of computing operations, the second state logic being configured to execute a second polling process involving transmitting a second set of consecutive requests to the one or more APIs for implementing a second computing operation of the plurality of computing operations, and further comprising implementing the plurality of polling times by:
configuring the first polling process to pause for a first polling time of the plurality of polling times between the first set of consecutive requests; and
configuring the second polling process to pause for a second polling time of the plurality of polling times between the second set of consecutive requests, the second polling time being different from the first polling time.

### Claim 16 (depends on 15)

The method of claim 15, wherein the first computing operation is a particular computing operation configured with a first parameter value, and the second computing operation is the particular computing operation configured with a second parameter value.

### Claim 17 (depends on 16)

The method of claim 16, wherein the first parameter value is a first value of a parameter and the second parameter value is a second value of the parameter, the second value being different than the first value.

### Claim 18 (depends on 12)

The method of claim 12, further comprising determining the plurality of polling times using a model, wherein the model is a machine-learning model configured using the historical data.

### Claim 19 (depends on 12)

The method of claim 12, further comprising determining the plurality of polling times using a model, wherein the model is a time-series clustering model configured to:
generate a plurality of clusters corresponding to the plurality of computing operations; and
assign a respective polling value to each cluster of the plurality of clusters.

### Claim 20

A system comprising:
a processor; and
a memory including instructions executable by the processor for causing the processor to:
obtain historical data indicating execution times associated with a plurality of computing operations, wherein the execution times each indicate a respective amount of time associated with executing a respective computing operation of the plurality of computing operations during a prior time period;
determine a plurality of polling times to assign to the plurality of computing operations by applying a model to the historical data; and
configure a software application to implement the plurality of polling times in relation to a plurality of polling processes for transmitting requests to execute the plurality of computing operations to one or more destinations.
