MCPcopy Index your code
hub / github.com/MagicStack/asyncpg / start

Method start

asyncpg/cluster.py:167–260  ·  view source on GitHub ↗

Start the cluster.

(self, wait=60, *, server_settings={}, **opts)

Source from the content-addressed store, hash-verified

165 return output.decode()
166
167 def start(self, wait=60, *, server_settings={}, **opts):
168 """Start the cluster."""
169 status = self.get_status()
170 if status == 'running':
171 return
172 elif status == 'not-initialized':
173 raise ClusterError(
174 'cluster in {!r} has not been initialized'.format(
175 self._data_dir))
176
177 port = opts.pop('port', None)
178 if port == 'dynamic':
179 port = find_available_port()
180
181 extra_args = ['--{}={}'.format(k, v) for k, v in opts.items()]
182 extra_args.append('--port={}'.format(port))
183
184 sockdir = server_settings.get('unix_socket_directories')
185 if sockdir is None:
186 sockdir = server_settings.get('unix_socket_directory')
187 if sockdir is None and _system != 'Windows':
188 sockdir = tempfile.gettempdir()
189
190 ssl_key = server_settings.get('ssl_key_file')
191 if ssl_key:
192 # Make sure server certificate key file has correct permissions.
193 keyfile = os.path.join(self._data_dir, 'srvkey.pem')
194 shutil.copy(ssl_key, keyfile)
195 os.chmod(keyfile, 0o600)
196 server_settings = server_settings.copy()
197 server_settings['ssl_key_file'] = keyfile
198
199 if sockdir is not None:
200 if self._pg_version < (9, 3):
201 sockdir_opt = 'unix_socket_directory'
202 else:
203 sockdir_opt = 'unix_socket_directories'
204
205 server_settings[sockdir_opt] = sockdir
206
207 for k, v in server_settings.items():
208 extra_args.extend(['-c', '{}={}'.format(k, v)])
209
210 if _system == 'Windows':
211 # On Windows we have to use pg_ctl as direct execution
212 # of postgres daemon under an Administrative account
213 # is not permitted and there is no easy way to drop
214 # privileges.
215 if os.getenv('ASYNCPG_DEBUG_SERVER'):
216 stdout = sys.stdout
217 print(
218 'asyncpg.cluster: Running',
219 ' '.join([
220 self._pg_ctl, 'start', '-D', self._data_dir,
221 '-o', ' '.join(extra_args)
222 ]),
223 file=sys.stderr,
224 )

Calls 6

get_statusMethod · 0.95
_test_connectionMethod · 0.95
ClusterErrorClass · 0.85
find_available_portFunction · 0.85
getMethod · 0.80
runMethod · 0.80