##### SUMMARY
I'm running a playbook on a host on F30 where `discovered_interpreter_python` is found to be `/usr/bin/python3`. Later the playbook I delegate tasks to another host which happen to run using the same interpreter without redoing the discovery and contrary to currently cached value.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
discovered_interpreter_python

##### ANSIBLE VERSION

```paste below
ansible 2.8.4
  config file = /home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg
  configured module search path = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/library']
  ansible python module location = /home/duck/.local/lib/python3.7/site-packages/ansible
  executable location = /home/duck/.local/bin/ansible
  python version = 3.7.4 (default, Jul 11 2019, 10:43:21) [GCC 8.3.0]

```

##### CONFIGURATION

```paste below
ANSIBLE_FORCE_COLOR(env: ANSIBLE_FORCE_COLOR) = True
ANSIBLE_PIPELINING(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = True
ANSIBLE_SSH_ARGS(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = -o ControlMaster=auto -o ControlPersist=30m
CACHE_PLUGIN(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = jsonfile
CACHE_PLUGIN_CONNECTION(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ./facts_cache
CACHE_PLUGIN_TIMEOUT(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = 86400
DEFAULT_ACTION_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugins/a
DEFAULT_CALLBACK_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugins
DEFAULT_CONNECTION_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugi
DEFAULT_FILTER_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugins/f
DEFAULT_FORKS(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = 10
DEFAULT_GATHERING(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = smart
DEFAULT_HASH_BEHAVIOUR(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = merge
DEFAULT_HOST_LIST(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/hosts.yml']
DEFAULT_LOOKUP_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugins/l
DEFAULT_MANAGED_STR(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = Ansible managed
DEFAULT_MODULE_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/library']
DEFAULT_ROLES_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/roles']
DEFAULT_STRATEGY_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugins
DEFAULT_TIMEOUT(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = 40
DEFAULT_VARS_PLUGIN_PATH(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = ['/home/duck/Projects/oVirt/gerrit_infra-ansible/plugins/var
DEFAULT_VAULT_PASSWORD_FILE(env: ANSIBLE_VAULT_PASSWORD_FILE) = /somewhere
ERROR_ON_MISSING_HANDLER(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = auto
PARAMIKO_HOST_KEY_AUTO_ADD(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = True
PERSISTENT_CONNECT_TIMEOUT(/home/duck/Projects/oVirt/gerrit_infra-ansible/ansible.cfg) = 1800
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->


##### STEPS TO REPRODUCE

```yaml
---
  
- hosts: ovirt-web-builder.int.osci.io
  tasks:
    - name: Get facts for the other side
      setup:
      delegate_to: www.ovirt.org
      delegate_facts: True

```

##### EXPECTED RESULTS
Ansible should use the value in my cache (see below) or if expired initiate a discovery for www.ovirt.org instead of using the same interpreter as the target host.

##### ACTUAL RESULTS

```paste below
PLAY [ovirt-web-builder.int.osci.io] **************************************************************************************************************

TASK [Get facts for the other side] ***************************************************************************************************************
fatal: [ovirt-web-builder.int.osci.io -> 8.43.85.224]: FAILED! => {"changed": false, "module_stderr": "/bin/sh: /usr/bin/python3: No such file or directory\n", "module_stdout": "", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127}

PLAY RECAP ****************************************************************************************************************************************
ovirt-web-builder.int.osci.io : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   
```

Please not my cache:
```
$ grep discovered_interpreter_python facts_cache/www.ovirt.org 
    "discovered_interpreter_python": "/usr/bin/python",
```

moving the cache file aside does not change the behavior.

doing a setup manually works and discover the right interpreter:
```
$ ansible www.ovirt.org -m setup | grep discovered_interpreter_python
        "discovered_interpreter_python": "/usr/bin/python",
```

Also the value of `interpreter_python` in `ansible.cfg` does not change anything.

Of course I can force the value of `ansible_python_interpreter` and everything works fine, but why would I do that since we now have a magic autodetection? This is also a regression for a perfectly working playbook.

host_list = self.get_delegated_hosts(result_item, original_task)
                        else:
                            host_list = self.get_task_hosts(iterator, original_host, original_task)
                        if original_task.action == 'include_vars':
                            for (var_name, var_value) in iteritems(result_item['ansible_facts']):
                                
                                
                                for target_host in host_list:
                                    self._variable_manager.set_host_variable(target_host, var_name, var_value)
                        else:
                            cacheable = result_item.pop('_ansible_facts_cacheable', False)
                            for target_host in host_list:
                                
                                
                                
                                
                                
                                if original_task.action != 'set_fact' or cacheable:
                                    self._variable_manager.set_host_facts(target_host, result_item['ansible_facts'].copy())
                                if original_task.action == 'set_fact':
                                    self._variable_manager.set_nonpersistent_facts(target_host, result_item['ansible_facts'].copy())
                    if 'ansible_stats' in result_item and 'data' in result_item['ansible_stats'] and result_item['ansible_stats']['data']:
                        if 'per_host' not in result_item['ansible_stats'] or result_item['ansible_stats']['per_host']:
                            host_list = self.get_task_hosts(iterator, original_host, original_task)
                        else:
                            host_list = [None]
                        data = result_item['ansible_stats']['data']
                        aggregate = 'aggregate' in result_item['ansible_stats'] and result_item['ansible_stats']['aggregate']
                        for myhost in host_list:
                            for k in data.keys():