We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
threading.Thread.setDaemon has been deprecated in favor of setting daemon attribute directly in Python 3.10
Ref : python/cpython#25174

https://github.com/benoitc/gunicorn/blob/cf55d2cec277f220ebd605989ce78ad1bb553c46/gunicorn/reloader.py#L20

https://github.com/benoitc/gunicorn/blob/cf55d2cec277f220ebd605989ce78ad1bb553c46/gunicorn/reloader.py#L77

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `gunicorn/reloader.py`
Content:
```
1 # -*- coding: utf-8 -
2 #
3 # This file is part of gunicorn released under the MIT license.
4 # See the NOTICE for more information.
5 # pylint: disable=no-else-continue
6 
7 import os
8 import os.path
9 import re
10 import sys
11 import time
12 import threading
13 
14 COMPILED_EXT_RE = re.compile(r'py[co]$')
15 
16 
17 class Reloader(threading.Thread):
18     def __init__(self, extra_files=None, interval=1, callback=None):
19         super().__init__()
20         self.setDaemon(True)
21         self._extra_files = set(extra_files or ())
22         self._interval = interval
23         self._callback = callback
24 
25     def add_extra_file(self, filename):
26         self._extra_files.add(filename)
27 
28     def get_files(self):
29         fnames = [
30             COMPILED_EXT_RE.sub('py', module.__file__)
31             for module in tuple(sys.modules.values())
32             if getattr(module, '__file__', None)
33         ]
34 
35         fnames.extend(self._extra_files)
36 
37         return fnames
38 
39     def run(self):
40         mtimes = {}
41         while True:
42             for filename in self.get_files():
43                 try:
44                     mtime = os.stat(filename).st_mtime
45                 except OSError:
46                     continue
47                 old_time = mtimes.get(filename)
48                 if old_time is None:
49                     mtimes[filename] = mtime
50                     continue
51                 elif mtime > old_time:
52                     if self._callback:
53                         self._callback(filename)
54             time.sleep(self._interval)
55 
56 
57 has_inotify = False
58 if sys.platform.startswith('linux'):
59     try:
60         from inotify.adapters import Inotify
61         import inotify.constants
62         has_inotify = True
63     except ImportError:
64         pass
65 
66 
67 if has_inotify:
68 
69     class InotifyReloader(threading.Thread):
70         event_mask = (inotify.constants.IN_CREATE | inotify.constants.IN_DELETE
71                       | inotify.constants.IN_DELETE_SELF | inotify.constants.IN_MODIFY
72                       | inotify.constants.IN_MOVE_SELF | inotify.constants.IN_MOVED_FROM
73                       | inotify.constants.IN_MOVED_TO)
74 
75         def __init__(self, extra_files=None, callback=None):
76             super().__init__()
77             self.setDaemon(True)
78             self._callback = callback
79             self._dirs = set()
80             self._watcher = Inotify()
81 
82             for extra_file in extra_files:
83                 self.add_extra_file(extra_file)
84 
85         def add_extra_file(self, filename):
86             dirname = os.path.dirname(filename)
87 
88             if dirname in self._dirs:
89                 return
90 
91             self._watcher.add_watch(dirname, mask=self.event_mask)
92             self._dirs.add(dirname)
93 
94         def get_dirs(self):
95             fnames = [
96                 os.path.dirname(os.path.abspath(COMPILED_EXT_RE.sub('py', module.__file__)))
97                 for module in tuple(sys.modules.values())
98                 if getattr(module, '__file__', None)
99             ]
100 
101             return set(fnames)
102 
103         def run(self):
104             self._dirs = self.get_dirs()
105 
106             for dirname in self._dirs:
107                 if os.path.isdir(dirname):
108                     self._watcher.add_watch(dirname, mask=self.event_mask)
109 
110             for event in self._watcher.event_gen():
111                 if event is None:
112                     continue
113 
114                 filename = event[3]
115 
116                 self._callback(filename)
117 
118 else:
119 
120     class InotifyReloader(object):
121         def __init__(self, callback=None):
122             raise ImportError('You must have the inotify module installed to '
123                               'use the inotify reloader')
124 
125 
126 preferred_reloader = InotifyReloader if has_inotify else Reloader
127 
128 reloader_engines = {
129     'auto': preferred_reloader,
130     'poll': Reloader,
131     'inotify': InotifyReloader,
132 }
133
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/gunicorn/reloader.py b/gunicorn/reloader.py
--- a/gunicorn/reloader.py
+++ b/gunicorn/reloader.py
@@ -17,7 +17,7 @@
 class Reloader(threading.Thread):
     def __init__(self, extra_files=None, interval=1, callback=None):
         super().__init__()
-        self.setDaemon(True)
+        self.daemon = True
         self._extra_files = set(extra_files or ())
         self._interval = interval
         self._callback = callback
@@ -74,7 +74,7 @@
 
         def __init__(self, extra_files=None, callback=None):
             super().__init__()
-            self.setDaemon(True)
+            self.daemon = True
             self._callback = callback
             self._dirs = set()
             self._watcher = Inotify()

{"golden_diff": "diff --git a/gunicorn/reloader.py b/gunicorn/reloader.py\n--- a/gunicorn/reloader.py\n+++ b/gunicorn/reloader.py\n@@ -17,7 +17,7 @@\n class Reloader(threading.Thread):\n     def __init__(self, extra_files=None, interval=1, callback=None):\n         super().__init__()\n-        self.setDaemon(True)\n+        self.daemon = True\n         self._extra_files = set(extra_files or ())\n         self._interval = interval\n         self._callback = callback\n@@ -74,7 +74,7 @@\n \n         def __init__(self, extra_files=None, callback=None):\n             super().__init__()\n-            self.setDaemon(True)\n+            self.daemon = True\n             self._callback = callback\n             self._dirs = set()\n             self._watcher = Inotify()\n", "issue": "threading.Thread.setDaemon has been deprecated in favor of setting daemon attribute directly in Python 3.10\nRef : python/cpython#25174\r\n\r\nhttps://github.com/benoitc/gunicorn/blob/cf55d2cec277f220ebd605989ce78ad1bb553c46/gunicorn/reloader.py#L20\r\n\r\nhttps://github.com/benoitc/gunicorn/blob/cf55d2cec277f220ebd605989ce78ad1bb553c46/gunicorn/reloader.py#L77\n", "before_files": [{"content": "# -*- coding: utf-8 -\n#\n# This file is part of gunicorn released under the MIT license.\n# See the NOTICE for more information.\n# pylint: disable=no-else-continue\n\nimport os\nimport os.path\nimport re\nimport sys\nimport time\nimport threading\n\nCOMPILED_EXT_RE = re.compile(r'py[co]$')\n\n\nclass Reloader(threading.Thread):\n    def __init__(self, extra_files=None, interval=1, callback=None):\n        super().__init__()\n        self.setDaemon(True)\n        self._extra_files = set(extra_files or ())\n        self._interval = interval\n        self._callback = callback\n\n    def add_extra_file(self, filename):\n        self._extra_files.add(filename)\n\n    def get_files(self):\n        fnames = [\n            COMPILED_EXT_RE.sub('py', module.__file__)\n            for module in tuple(sys.modules.values())\n            if getattr(module, '__file__', None)\n        ]\n\n        fnames.extend(self._extra_files)\n\n        return fnames\n\n    def run(self):\n        mtimes = {}\n        while True:\n            for filename in self.get_files():\n                try:\n                    mtime = os.stat(filename).st_mtime\n                except OSError:\n                    continue\n                old_time = mtimes.get(filename)\n                if old_time is None:\n                    mtimes[filename] = mtime\n                    continue\n                elif mtime > old_time:\n                    if self._callback:\n                        self._callback(filename)\n            time.sleep(self._interval)\n\n\nhas_inotify = False\nif sys.platform.startswith('linux'):\n    try:\n        from inotify.adapters import Inotify\n        import inotify.constants\n        has_inotify = True\n    except ImportError:\n        pass\n\n\nif has_inotify:\n\n    class InotifyReloader(threading.Thread):\n        event_mask = (inotify.constants.IN_CREATE | inotify.constants.IN_DELETE\n                      | inotify.constants.IN_DELETE_SELF | inotify.constants.IN_MODIFY\n                      | inotify.constants.IN_MOVE_SELF | inotify.constants.IN_MOVED_FROM\n                      | inotify.constants.IN_MOVED_TO)\n\n        def __init__(self, extra_files=None, callback=None):\n            super().__init__()\n            self.setDaemon(True)\n            self._callback = callback\n            self._dirs = set()\n            self._watcher = Inotify()\n\n            for extra_file in extra_files:\n                self.add_extra_file(extra_file)\n\n        def add_extra_file(self, filename):\n            dirname = os.path.dirname(filename)\n\n            if dirname in self._dirs:\n                return\n\n            self._watcher.add_watch(dirname, mask=self.event_mask)\n            self._dirs.add(dirname)\n\n        def get_dirs(self):\n            fnames = [\n                os.path.dirname(os.path.abspath(COMPILED_EXT_RE.sub('py', module.__file__)))\n                for module in tuple(sys.modules.values())\n                if getattr(module, '__file__', None)\n            ]\n\n            return set(fnames)\n\n        def run(self):\n            self._dirs = self.get_dirs()\n\n            for dirname in self._dirs:\n                if os.path.isdir(dirname):\n                    self._watcher.add_watch(dirname, mask=self.event_mask)\n\n            for event in self._watcher.event_gen():\n                if event is None:\n                    continue\n\n                filename = event[3]\n\n                self._callback(filename)\n\nelse:\n\n    class InotifyReloader(object):\n        def __init__(self, callback=None):\n            raise ImportError('You must have the inotify module installed to '\n                              'use the inotify reloader')\n\n\npreferred_reloader = InotifyReloader if has_inotify else Reloader\n\nreloader_engines = {\n    'auto': preferred_reloader,\n    'poll': Reloader,\n    'inotify': InotifyReloader,\n}\n", "path": "gunicorn/reloader.py"}], "after_files": [{"content": "# -*- coding: utf-8 -\n#\n# This file is part of gunicorn released under the MIT license.\n# See the NOTICE for more information.\n# pylint: disable=no-else-continue\n\nimport os\nimport os.path\nimport re\nimport sys\nimport time\nimport threading\n\nCOMPILED_EXT_RE = re.compile(r'py[co]$')\n\n\nclass Reloader(threading.Thread):\n    def __init__(self, extra_files=None, interval=1, callback=None):\n        super().__init__()\n        self.daemon = True\n        self._extra_files = set(extra_files or ())\n        self._interval = interval\n        self._callback = callback\n\n    def add_extra_file(self, filename):\n        self._extra_files.add(filename)\n\n    def get_files(self):\n        fnames = [\n            COMPILED_EXT_RE.sub('py', module.__file__)\n            for module in tuple(sys.modules.values())\n            if getattr(module, '__file__', None)\n        ]\n\n        fnames.extend(self._extra_files)\n\n        return fnames\n\n    def run(self):\n        mtimes = {}\n        while True:\n            for filename in self.get_files():\n                try:\n                    mtime = os.stat(filename).st_mtime\n                except OSError:\n                    continue\n                old_time = mtimes.get(filename)\n                if old_time is None:\n                    mtimes[filename] = mtime\n                    continue\n                elif mtime > old_time:\n                    if self._callback:\n                        self._callback(filename)\n            time.sleep(self._interval)\n\n\nhas_inotify = False\nif sys.platform.startswith('linux'):\n    try:\n        from inotify.adapters import Inotify\n        import inotify.constants\n        has_inotify = True\n    except ImportError:\n        pass\n\n\nif has_inotify:\n\n    class InotifyReloader(threading.Thread):\n        event_mask = (inotify.constants.IN_CREATE | inotify.constants.IN_DELETE\n                      | inotify.constants.IN_DELETE_SELF | inotify.constants.IN_MODIFY\n                      | inotify.constants.IN_MOVE_SELF | inotify.constants.IN_MOVED_FROM\n                      | inotify.constants.IN_MOVED_TO)\n\n        def __init__(self, extra_files=None, callback=None):\n            super().__init__()\n            self.daemon = True\n            self._callback = callback\n            self._dirs = set()\n            self._watcher = Inotify()\n\n            for extra_file in extra_files:\n                self.add_extra_file(extra_file)\n\n        def add_extra_file(self, filename):\n            dirname = os.path.dirname(filename)\n\n            if dirname in self._dirs:\n                return\n\n            self._watcher.add_watch(dirname, mask=self.event_mask)\n            self._dirs.add(dirname)\n\n        def get_dirs(self):\n            fnames = [\n                os.path.dirname(os.path.abspath(COMPILED_EXT_RE.sub('py', module.__file__)))\n                for module in tuple(sys.modules.values())\n                if getattr(module, '__file__', None)\n            ]\n\n            return set(fnames)\n\n        def run(self):\n            self._dirs = self.get_dirs()\n\n            for dirname in self._dirs:\n                if os.path.isdir(dirname):\n                    self._watcher.add_watch(dirname, mask=self.event_mask)\n\n            for event in self._watcher.event_gen():\n                if event is None:\n                    continue\n\n                filename = event[3]\n\n                self._callback(filename)\n\nelse:\n\n    class InotifyReloader(object):\n        def __init__(self, callback=None):\n            raise ImportError('You must have the inotify module installed to '\n                              'use the inotify reloader')\n\n\npreferred_reloader = InotifyReloader if has_inotify else Reloader\n\nreloader_engines = {\n    'auto': preferred_reloader,\n    'poll': Reloader,\n    'inotify': InotifyReloader,\n}\n", "path": "gunicorn/reloader.py"}]}