· 4 years ago · Apr 15, 2021, 05:38 PM
1<html lang="en">
2<head>
3 <meta http-equiv="content-type" content="text/html; charset=utf-8">
4 <meta name="robots" content="NONE,NOARCHIVE">
5 <title>RuntimeError
6 at /backlink/keyword-difficulty/</title>
7 <style type="text/css">
8 html * { padding:0; margin:0; }
9 body * { padding:10px 20px; }
10 body * * { padding:0; }
11 body { font:small sans-serif; background-color:#fff; color:#000; }
12 body>div { border-bottom:1px solid #ddd; }
13 h1 { font-weight:normal; }
14 h2 { margin-bottom:.8em; }
15 h3 { margin:1em 0 .5em 0; }
16 h4 { margin:0 0 .5em 0; font-weight: normal; }
17 code, pre { font-size: 100%; white-space: pre-wrap; }
18 table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
19 tbody td, tbody th { vertical-align:top; padding:2px 3px; }
20 thead th {
21 padding:1px 6px 1px 3px; background:#fefefe; text-align:left;
22 font-weight:normal; font-size:11px; border:1px solid #ddd;
23 }
24 tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
25 table.vars { margin:5px 0 2px 40px; }
26 table.vars td, table.req td { font-family:monospace; }
27 table td.code { width:100%; }
28 table td.code pre { overflow:hidden; }
29 table.source th { color:#666; }
30 table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }
31 ul.traceback { list-style-type:none; color: #222; }
32 ul.traceback li.frame { padding-bottom:1em; color:#4f4f4f; }
33 ul.traceback li.user { background-color:#e0e0e0; color:#000 }
34 div.context { padding:10px 0; overflow:hidden; }
35 div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }
36 div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; padding-left: 2px; }
37 div.context ol li pre { display:inline; }
38 div.context ol.context-line li { color:#464646; background-color:#dfdfdf; padding: 3px 2px; }
39 div.context ol.context-line li span { position:absolute; right:32px; }
40 .user div.context ol.context-line li { background-color:#bbb; color:#000; }
41 .user div.context ol li { color:#666; }
42 div.commands { margin-left: 40px; }
43 div.commands a { color:#555; text-decoration:none; }
44 .user div.commands a { color: black; }
45 #summary { background: #ffc; }
46 #summary h2 { font-weight: normal; color: #666; }
47 #explanation { background:#eee; }
48 #template, #template-not-exist { background:#f6f6f6; }
49 #template-not-exist ul { margin: 0 0 10px 20px; }
50 #template-not-exist .postmortem-section { margin-bottom: 3px; }
51 #unicode-hint { background:#eee; }
52 #traceback { background:#eee; }
53 #requestinfo { background:#f6f6f6; padding-left:120px; }
54 #summary table { border:none; background:transparent; }
55 #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }
56 #requestinfo h3 { margin-bottom:-1em; }
57 .error { background: #ffc; }
58 .specific { color:#cc3300; font-weight:bold; }
59 h2 span.commands { font-size:.7em; font-weight:normal; }
60 span.commands a:link {color:#5E5694;}
61 pre.exception_value { font-family: sans-serif; color: #575757; font-size: 1.5em; margin: 10px 0 10px 0; }
62 .append-bottom { margin-bottom: 10px; }
63 .fname { user-select: all; }
64 </style>
65
66 <script>
67 function hideAll(elems) {
68 for (var e = 0; e < elems.length; e++) {
69 elems[e].style.display = 'none';
70 }
71 }
72 window.onload = function() {
73 hideAll(document.querySelectorAll('table.vars'));
74 hideAll(document.querySelectorAll('ol.pre-context'));
75 hideAll(document.querySelectorAll('ol.post-context'));
76 hideAll(document.querySelectorAll('div.pastebin'));
77 }
78 function toggle() {
79 for (var i = 0; i < arguments.length; i++) {
80 var e = document.getElementById(arguments[i]);
81 if (e) {
82 e.style.display = e.style.display == 'none' ? 'block': 'none';
83 }
84 }
85 return false;
86 }
87 function varToggle(link, id) {
88 toggle('v' + id);
89 var s = link.getElementsByTagName('span')[0];
90 var uarr = String.fromCharCode(0x25b6);
91 var darr = String.fromCharCode(0x25bc);
92 s.textContent = s.textContent == uarr ? darr : uarr;
93 return false;
94 }
95 function switchPastebinFriendly(link) {
96 s1 = "Switch to copy-and-paste view";
97 s2 = "Switch back to interactive view";
98 link.textContent = link.textContent.trim() == s1 ? s2: s1;
99 toggle('browserTraceback', 'pastebinTraceback');
100 return false;
101 }
102 </script>
103
104</head>
105<body>
106<div id="summary">
107 <h1>RuntimeError
108 at /backlink/keyword-difficulty/</h1>
109 <pre class="exception_value">There is no current event loop in thread 'ThreadPoolExecutor-0_0'.</pre>
110 <table class="meta">
111
112 <tr>
113 <th>Request Method:</th>
114 <td>GET</td>
115 </tr>
116 <tr>
117 <th>Request URL:</th>
118 <td>https://backlink.searchatlas.com/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com</td>
119 </tr>
120
121 <tr>
122 <th>Django Version:</th>
123 <td>3.2</td>
124 </tr>
125
126 <tr>
127 <th>Exception Type:</th>
128 <td>RuntimeError</td>
129 </tr>
130
131
132 <tr>
133 <th>Exception Value:</th>
134 <td><pre>There is no current event loop in thread 'ThreadPoolExecutor-0_0'.</pre></td>
135 </tr>
136
137
138 <tr>
139 <th>Exception Location:</th>
140 <td><span class="fname">/usr/local/lib/python3.8/asyncio/events.py</span>, line 639, in get_event_loop</td>
141 </tr>
142
143 <tr>
144 <th>Python Executable:</th>
145 <td>/usr/local/bin/python</td>
146 </tr>
147 <tr>
148 <th>Python Version:</th>
149 <td>3.8.9</td>
150 </tr>
151 <tr>
152 <th>Python Path:</th>
153 <td><pre>['/usr/src/app',
154 '/usr/local/bin',
155 '/usr/src/app',
156 '/usr/local/lib/python38.zip',
157 '/usr/local/lib/python3.8',
158 '/usr/local/lib/python3.8/lib-dynload',
159 '/usr/local/lib/python3.8/site-packages']</pre></td>
160 </tr>
161 <tr>
162 <th>Server time:</th>
163 <td>Thu, 15 Apr 2021 17:26:34 +0000</td>
164 </tr>
165 </table>
166</div>
167
168
169
170
171<div id="traceback">
172 <h2>Traceback <span class="commands"><a href="#" onclick="return switchPastebinFriendly(this);">
173 Switch to copy-and-paste view</a></span>
174 </h2>
175 <div id="browserTraceback">
176 <ul class="traceback">
177
178
179 <li class="frame django">
180
181 <code class="fname">/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py</code>, line 47, in inner
182
183
184
185 <div class="context" id="c140096216598912">
186
187 <ol start="40" class="pre-context" id="pre140096216598912">
188
189 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)</pre></li>
190
191 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> return response</pre></li>
192
193 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> return inner</pre></li>
194
195 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> else:</pre></li>
196
197 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> @wraps(get_response)</pre></li>
198
199 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> def inner(request):</pre></li>
200
201 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> try:</pre></li>
202
203 </ol>
204
205 <ol start="47" class="context-line">
206 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> response = get_response(request)</pre> <span>â¦</span></li>
207 </ol>
208
209 <ol start='48' class="post-context" id="post140096216598912">
210
211 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> except Exception as exc:</pre></li>
212
213 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> response = response_for_exception(request, exc)</pre></li>
214
215 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> return response</pre></li>
216
217 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre> return inner</pre></li>
218
219 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre></pre></li>
220
221 <li onclick="toggle('pre140096216598912', 'post140096216598912')"><pre></pre></li>
222
223 </ol>
224
225 </div>
226
227
228
229 <div class="commands">
230
231 <a href="#" onclick="return varToggle(this, '140096216598912')"><span>▶</span> Local vars</a>
232
233 </div>
234 <table class="vars" id="v140096216598912">
235 <thead>
236 <tr>
237 <th>Variable</th>
238 <th>Value</th>
239 </tr>
240 </thead>
241 <tbody>
242
243 <tr>
244 <td>exc</td>
245 <td class="code"><pre>RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")</pre></td>
246 </tr>
247
248 <tr>
249 <td>get_response</td>
250 <td class="code"><pre><bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f6ac4805d90>></pre></td>
251 </tr>
252
253 <tr>
254 <td>request</td>
255 <td class="code"><pre><WSGIRequest: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
256 </tr>
257
258 </tbody>
259 </table>
260
261 </li>
262
263
264 <li class="frame django">
265
266 <code class="fname">/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py</code>, line 181, in _get_response
267
268
269
270 <div class="context" id="c140096216599104">
271
272 <ol start="174" class="pre-context" id="pre140096216599104">
273
274 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre></pre></li>
275
276 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> if response is None:</pre></li>
277
278 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>
279
280 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> # If it is an asynchronous view, run it in a subthread.</pre></li>
281
282 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> if asyncio.iscoroutinefunction(wrapped_callback):</pre></li>
283
284 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> wrapped_callback = async_to_sync(wrapped_callback)</pre></li>
285
286 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> try:</pre></li>
287
288 </ol>
289
290 <ol start="181" class="context-line">
291 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>â¦</span></li>
292 </ol>
293
294 <ol start='182' class="post-context" id="post140096216599104">
295
296 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> except Exception as e:</pre></li>
297
298 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> response = self.process_exception_by_middleware(e, request)</pre></li>
299
300 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> if response is None:</pre></li>
301
302 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> raise</pre></li>
303
304 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre></pre></li>
305
306 <li onclick="toggle('pre140096216599104', 'post140096216599104')"><pre> # Complain if the view returned None (a common error).</pre></li>
307
308 </ol>
309
310 </div>
311
312
313
314 <div class="commands">
315
316 <a href="#" onclick="return varToggle(this, '140096216599104')"><span>▶</span> Local vars</a>
317
318 </div>
319 <table class="vars" id="v140096216599104">
320 <thead>
321 <tr>
322 <th>Variable</th>
323 <th>Value</th>
324 </tr>
325 </thead>
326 <tbody>
327
328 <tr>
329 <td>callback</td>
330 <td class="code"><pre><function KeywordDifficultyAPIView at 0x7f6ac38e68b0></pre></td>
331 </tr>
332
333 <tr>
334 <td>callback_args</td>
335 <td class="code"><pre>()</pre></td>
336 </tr>
337
338 <tr>
339 <td>callback_kwargs</td>
340 <td class="code"><pre>{}</pre></td>
341 </tr>
342
343 <tr>
344 <td>middleware_method</td>
345 <td class="code"><pre><function CsrfViewMiddleware.process_view at 0x7f6ac4452ee0></pre></td>
346 </tr>
347
348 <tr>
349 <td>request</td>
350 <td class="code"><pre><WSGIRequest: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
351 </tr>
352
353 <tr>
354 <td>response</td>
355 <td class="code"><pre>None</pre></td>
356 </tr>
357
358 <tr>
359 <td>self</td>
360 <td class="code"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7f6ac4805d90></pre></td>
361 </tr>
362
363 <tr>
364 <td>wrapped_callback</td>
365 <td class="code"><pre><function KeywordDifficultyAPIView at 0x7f6ac38e68b0></pre></td>
366 </tr>
367
368 </tbody>
369 </table>
370
371 </li>
372
373
374 <li class="frame django">
375
376 <code class="fname">/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py</code>, line 54, in wrapped_view
377
378
379
380 <div class="context" id="c140096216598400">
381
382 <ol start="47" class="pre-context" id="pre140096216598400">
383
384 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre></pre></li>
385
386 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre></pre></li>
387
388 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre>def csrf_exempt(view_func):</pre></li>
389
390 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> """Mark a view function as being exempt from the CSRF view protection."""</pre></li>
391
392 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> # view_func.csrf_exempt = True would also work, but decorators are nicer</pre></li>
393
394 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> # if they don't have side effects, so return a new function.</pre></li>
395
396 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> def wrapped_view(*args, **kwargs):</pre></li>
397
398 </ol>
399
400 <ol start="54" class="context-line">
401 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> return view_func(*args, **kwargs)</pre> <span>â¦</span></li>
402 </ol>
403
404 <ol start='55' class="post-context" id="post140096216598400">
405
406 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> wrapped_view.csrf_exempt = True</pre></li>
407
408 <li onclick="toggle('pre140096216598400', 'post140096216598400')"><pre> return wraps(view_func)(wrapped_view)</pre></li>
409
410 </ol>
411
412 </div>
413
414
415
416 <div class="commands">
417
418 <a href="#" onclick="return varToggle(this, '140096216598400')"><span>▶</span> Local vars</a>
419
420 </div>
421 <table class="vars" id="v140096216598400">
422 <thead>
423 <tr>
424 <th>Variable</th>
425 <th>Value</th>
426 </tr>
427 </thead>
428 <tbody>
429
430 <tr>
431 <td>args</td>
432 <td class="code"><pre>(<WSGIRequest: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>,)</pre></td>
433 </tr>
434
435 <tr>
436 <td>kwargs</td>
437 <td class="code"><pre>{}</pre></td>
438 </tr>
439
440 <tr>
441 <td>view_func</td>
442 <td class="code"><pre><function KeywordDifficultyAPIView at 0x7f6ac38e6820></pre></td>
443 </tr>
444
445 </tbody>
446 </table>
447
448 </li>
449
450
451 <li class="frame django">
452
453 <code class="fname">/usr/local/lib/python3.8/site-packages/django/views/generic/base.py</code>, line 70, in view
454
455
456
457 <div class="context" id="c140096216598208">
458
459 <ol start="63" class="pre-context" id="pre140096216598208">
460
461 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> self = cls(**initkwargs)</pre></li>
462
463 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> self.setup(request, *args, **kwargs)</pre></li>
464
465 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> if not hasattr(self, 'request'):</pre></li>
466
467 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> raise AttributeError(</pre></li>
468
469 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> "%s instance has no 'request' attribute. Did you override "</pre></li>
470
471 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> "setup() and forget to call super()?" % cls.__name__</pre></li>
472
473 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> )</pre></li>
474
475 </ol>
476
477 <ol start="70" class="context-line">
478 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> return self.dispatch(request, *args, **kwargs)</pre> <span>â¦</span></li>
479 </ol>
480
481 <ol start='71' class="post-context" id="post140096216598208">
482
483 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> view.view_class = cls</pre></li>
484
485 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> view.view_initkwargs = initkwargs</pre></li>
486
487 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre></pre></li>
488
489 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> # take name and docstring from class</pre></li>
490
491 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre> update_wrapper(view, cls, updated=())</pre></li>
492
493 <li onclick="toggle('pre140096216598208', 'post140096216598208')"><pre></pre></li>
494
495 </ol>
496
497 </div>
498
499
500
501 <div class="commands">
502
503 <a href="#" onclick="return varToggle(this, '140096216598208')"><span>▶</span> Local vars</a>
504
505 </div>
506 <table class="vars" id="v140096216598208">
507 <thead>
508 <tr>
509 <th>Variable</th>
510 <th>Value</th>
511 </tr>
512 </thead>
513 <tbody>
514
515 <tr>
516 <td>args</td>
517 <td class="code"><pre>()</pre></td>
518 </tr>
519
520 <tr>
521 <td>cls</td>
522 <td class="code"><pre><class 'backlink.api.v1.views.KeywordDifficultyAPIView'></pre></td>
523 </tr>
524
525 <tr>
526 <td>initkwargs</td>
527 <td class="code"><pre>{}</pre></td>
528 </tr>
529
530 <tr>
531 <td>kwargs</td>
532 <td class="code"><pre>{}</pre></td>
533 </tr>
534
535 <tr>
536 <td>request</td>
537 <td class="code"><pre><WSGIRequest: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
538 </tr>
539
540 <tr>
541 <td>self</td>
542 <td class="code"><pre><backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100></pre></td>
543 </tr>
544
545 </tbody>
546 </table>
547
548 </li>
549
550
551 <li class="frame user">
552
553 <code class="fname">/usr/local/lib/python3.8/site-packages/rest_framework/views.py</code>, line 509, in dispatch
554
555
556
557 <div class="context" id="c140096216598464">
558
559 <ol start="502" class="pre-context" id="pre140096216598464">
560
561 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> self.http_method_not_allowed)</pre></li>
562
563 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> else:</pre></li>
564
565 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> handler = self.http_method_not_allowed</pre></li>
566
567 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre></pre></li>
568
569 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> response = handler(request, *args, **kwargs)</pre></li>
570
571 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre></pre></li>
572
573 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> except Exception as exc:</pre></li>
574
575 </ol>
576
577 <ol start="509" class="context-line">
578 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> response = self.handle_exception(exc)</pre> <span>â¦</span></li>
579 </ol>
580
581 <ol start='510' class="post-context" id="post140096216598464">
582
583 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre></pre></li>
584
585 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> self.response = self.finalize_response(request, response, *args, **kwargs)</pre></li>
586
587 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> return self.response</pre></li>
588
589 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre></pre></li>
590
591 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> def options(self, request, *args, **kwargs):</pre></li>
592
593 <li onclick="toggle('pre140096216598464', 'post140096216598464')"><pre> """</pre></li>
594
595 </ol>
596
597 </div>
598
599
600
601 <div class="commands">
602
603 <a href="#" onclick="return varToggle(this, '140096216598464')"><span>▶</span> Local vars</a>
604
605 </div>
606 <table class="vars" id="v140096216598464">
607 <thead>
608 <tr>
609 <th>Variable</th>
610 <th>Value</th>
611 </tr>
612 </thead>
613 <tbody>
614
615 <tr>
616 <td>args</td>
617 <td class="code"><pre>()</pre></td>
618 </tr>
619
620 <tr>
621 <td>handler</td>
622 <td class="code"><pre><bound method KeywordDifficultyAPIView.get of <backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100>></pre></td>
623 </tr>
624
625 <tr>
626 <td>kwargs</td>
627 <td class="code"><pre>{}</pre></td>
628 </tr>
629
630 <tr>
631 <td>request</td>
632 <td class="code"><pre><rest_framework.request.Request: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
633 </tr>
634
635 <tr>
636 <td>self</td>
637 <td class="code"><pre><backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100></pre></td>
638 </tr>
639
640 </tbody>
641 </table>
642
643 </li>
644
645
646 <li class="frame user">
647
648 <code class="fname">/usr/local/lib/python3.8/site-packages/rest_framework/views.py</code>, line 469, in handle_exception
649
650
651
652 <div class="context" id="c140096216599168">
653
654 <ol start="462" class="pre-context" id="pre140096216599168">
655
656 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre></pre></li>
657
658 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> exception_handler = self.get_exception_handler()</pre></li>
659
660 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre></pre></li>
661
662 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> context = self.get_exception_handler_context()</pre></li>
663
664 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> response = exception_handler(exc, context)</pre></li>
665
666 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre></pre></li>
667
668 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> if response is None:</pre></li>
669
670 </ol>
671
672 <ol start="469" class="context-line">
673 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> self.raise_uncaught_exception(exc)</pre> <span>â¦</span></li>
674 </ol>
675
676 <ol start='470' class="post-context" id="post140096216599168">
677
678 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre></pre></li>
679
680 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> response.exception = True</pre></li>
681
682 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> return response</pre></li>
683
684 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre></pre></li>
685
686 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> def raise_uncaught_exception(self, exc):</pre></li>
687
688 <li onclick="toggle('pre140096216599168', 'post140096216599168')"><pre> if settings.DEBUG:</pre></li>
689
690 </ol>
691
692 </div>
693
694
695
696 <div class="commands">
697
698 <a href="#" onclick="return varToggle(this, '140096216599168')"><span>▶</span> Local vars</a>
699
700 </div>
701 <table class="vars" id="v140096216599168">
702 <thead>
703 <tr>
704 <th>Variable</th>
705 <th>Value</th>
706 </tr>
707 </thead>
708 <tbody>
709
710 <tr>
711 <td>context</td>
712 <td class="code"><pre>{'args': (),
713 'kwargs': {},
714 'request': <rest_framework.request.Request: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>,
715 'view': <backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100>}</pre></td>
716 </tr>
717
718 <tr>
719 <td>exc</td>
720 <td class="code"><pre>RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")</pre></td>
721 </tr>
722
723 <tr>
724 <td>exception_handler</td>
725 <td class="code"><pre><function exception_handler at 0x7f6ac3d6f3a0></pre></td>
726 </tr>
727
728 <tr>
729 <td>response</td>
730 <td class="code"><pre>None</pre></td>
731 </tr>
732
733 <tr>
734 <td>self</td>
735 <td class="code"><pre><backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100></pre></td>
736 </tr>
737
738 </tbody>
739 </table>
740
741 </li>
742
743
744 <li class="frame user">
745
746 <code class="fname">/usr/local/lib/python3.8/site-packages/rest_framework/views.py</code>, line 480, in raise_uncaught_exception
747
748
749
750 <div class="context" id="c140096216599232">
751
752 <ol start="473" class="pre-context" id="pre140096216599232">
753
754 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre></pre></li>
755
756 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> def raise_uncaught_exception(self, exc):</pre></li>
757
758 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> if settings.DEBUG:</pre></li>
759
760 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> request = self.request</pre></li>
761
762 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> renderer_format = getattr(request.accepted_renderer, 'format')</pre></li>
763
764 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> use_plaintext_traceback = renderer_format not in ('html', 'api', 'admin')</pre></li>
765
766 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> request.force_plaintext_errors(use_plaintext_traceback)</pre></li>
767
768 </ol>
769
770 <ol start="480" class="context-line">
771 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> raise exc</pre> <span>â¦</span></li>
772 </ol>
773
774 <ol start='481' class="post-context" id="post140096216599232">
775
776 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre></pre></li>
777
778 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> # Note: Views are made CSRF exempt from within `as_view` as to prevent</pre></li>
779
780 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> # accidental removal of this exemption in cases where `dispatch` needs to</pre></li>
781
782 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> # be overridden.</pre></li>
783
784 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> def dispatch(self, request, *args, **kwargs):</pre></li>
785
786 <li onclick="toggle('pre140096216599232', 'post140096216599232')"><pre> """</pre></li>
787
788 </ol>
789
790 </div>
791
792
793
794 <div class="commands">
795
796 <a href="#" onclick="return varToggle(this, '140096216599232')"><span>▶</span> Local vars</a>
797
798 </div>
799 <table class="vars" id="v140096216599232">
800 <thead>
801 <tr>
802 <th>Variable</th>
803 <th>Value</th>
804 </tr>
805 </thead>
806 <tbody>
807
808 <tr>
809 <td>exc</td>
810 <td class="code"><pre>RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")</pre></td>
811 </tr>
812
813 <tr>
814 <td>renderer_format</td>
815 <td class="code"><pre>'json'</pre></td>
816 </tr>
817
818 <tr>
819 <td>request</td>
820 <td class="code"><pre><rest_framework.request.Request: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
821 </tr>
822
823 <tr>
824 <td>self</td>
825 <td class="code"><pre><backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100></pre></td>
826 </tr>
827
828 <tr>
829 <td>use_plaintext_traceback</td>
830 <td class="code"><pre>True</pre></td>
831 </tr>
832
833 </tbody>
834 </table>
835
836 </li>
837
838
839 <li class="frame user">
840
841 <code class="fname">/usr/local/lib/python3.8/site-packages/rest_framework/views.py</code>, line 506, in dispatch
842
843
844
845 <div class="context" id="c140096216597952">
846
847 <ol start="499" class="pre-context" id="pre140096216597952">
848
849 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> # Get the appropriate handler method</pre></li>
850
851 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> if request.method.lower() in self.http_method_names:</pre></li>
852
853 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> handler = getattr(self, request.method.lower(),</pre></li>
854
855 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> self.http_method_not_allowed)</pre></li>
856
857 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> else:</pre></li>
858
859 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> handler = self.http_method_not_allowed</pre></li>
860
861 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre></pre></li>
862
863 </ol>
864
865 <ol start="506" class="context-line">
866 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> response = handler(request, *args, **kwargs)</pre> <span>â¦</span></li>
867 </ol>
868
869 <ol start='507' class="post-context" id="post140096216597952">
870
871 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre></pre></li>
872
873 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> except Exception as exc:</pre></li>
874
875 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> response = self.handle_exception(exc)</pre></li>
876
877 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre></pre></li>
878
879 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> self.response = self.finalize_response(request, response, *args, **kwargs)</pre></li>
880
881 <li onclick="toggle('pre140096216597952', 'post140096216597952')"><pre> return self.response</pre></li>
882
883 </ol>
884
885 </div>
886
887
888
889 <div class="commands">
890
891 <a href="#" onclick="return varToggle(this, '140096216597952')"><span>▶</span> Local vars</a>
892
893 </div>
894 <table class="vars" id="v140096216597952">
895 <thead>
896 <tr>
897 <th>Variable</th>
898 <th>Value</th>
899 </tr>
900 </thead>
901 <tbody>
902
903 <tr>
904 <td>args</td>
905 <td class="code"><pre>()</pre></td>
906 </tr>
907
908 <tr>
909 <td>handler</td>
910 <td class="code"><pre><bound method KeywordDifficultyAPIView.get of <backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100>></pre></td>
911 </tr>
912
913 <tr>
914 <td>kwargs</td>
915 <td class="code"><pre>{}</pre></td>
916 </tr>
917
918 <tr>
919 <td>request</td>
920 <td class="code"><pre><rest_framework.request.Request: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
921 </tr>
922
923 <tr>
924 <td>self</td>
925 <td class="code"><pre><backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100></pre></td>
926 </tr>
927
928 </tbody>
929 </table>
930
931 </li>
932
933
934 <li class="frame user">
935
936 <code class="fname">/usr/src/app/backlink/api/v1/views.py</code>, line 247, in get
937
938
939
940 <div class="context" id="c140096216598272">
941
942 <ol start="240" class="pre-context" id="pre140096216598272">
943
944 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> stopwatch_instance.click('GET WEBSITES')</pre></li>
945
946 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> website_urls = request.GET.getlist("websites")</pre></li>
947
948 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> stopwatch_instance.click('GET WEBSITES')</pre></li>
949
950 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> if not website_urls:</pre></li>
951
952 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> error_message = f"Invalid website_urls received: {website_urls}"</pre></li>
953
954 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> raise serializers.ValidationError(error_message)</pre></li>
955
956 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> stopwatch_instance.click('WEBSITES GET_OR_CREATE')</pre></li>
957
958 </ol>
959
960 <ol start="247" class="context-line">
961 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> websites = Website.objects.get_or_create_from_urls(urls=website_urls)</pre> <span>â¦</span></li>
962 </ol>
963
964 <ol start='248' class="post-context" id="post140096216598272">
965
966 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> stopwatch_instance.click('WEBSITES GET_OR_CREATE')</pre></li>
967
968 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> stopwatch_instance.click('WEBSITES GET WEBSITE DATA FOR EACH')</pre></li>
969
970 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> website_ids = [website.id for website in websites]</pre></li>
971
972 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> websites_qs = Website.objects.filter(pk__in=website_ids)</pre></li>
973
974 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> websites_specs = get_website_data(websites_qs=websites_qs)</pre></li>
975
976 <li onclick="toggle('pre140096216598272', 'post140096216598272')"><pre> stopwatch_instance.click('WEBSITES GET WEBSITE DATA FOR EACH')</pre></li>
977
978 </ol>
979
980 </div>
981
982
983
984 <div class="commands">
985
986 <a href="#" onclick="return varToggle(this, '140096216598272')"><span>▶</span> Local vars</a>
987
988 </div>
989 <table class="vars" id="v140096216598272">
990 <thead>
991 <tr>
992 <th>Variable</th>
993 <th>Value</th>
994 </tr>
995 </thead>
996 <tbody>
997
998 <tr>
999 <td>kwargs</td>
1000 <td class="code"><pre>{}</pre></td>
1001 </tr>
1002
1003 <tr>
1004 <td>request</td>
1005 <td class="code"><pre><rest_framework.request.Request: GET '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'></pre></td>
1006 </tr>
1007
1008 <tr>
1009 <td>self</td>
1010 <td class="code"><pre><backlink.api.v1.views.KeywordDifficultyAPIView object at 0x7f6ab1141100></pre></td>
1011 </tr>
1012
1013 <tr>
1014 <td>stopwatch_instance</td>
1015 <td class="code"><pre><utils.profiling.Stopwatch object at 0x7f6ab1141bb0></pre></td>
1016 </tr>
1017
1018 <tr>
1019 <td>website_urls</td>
1020 <td class="code"><pre>['jackjones.com',
1021 'jack-jones.ca',
1022 'bestsellerclothing.com',
1023 'jackjones.in',
1024 'wikipedia.org',
1025 'jakeandjones.com',
1026 'jackandjones.com',
1027 'amazon.com',
1028 'instagram.com',
1029 'apple.com']</pre></td>
1030 </tr>
1031
1032 </tbody>
1033 </table>
1034
1035 </li>
1036
1037
1038 <li class="frame user">
1039
1040 <code class="fname">/usr/src/app/backlink/models.py</code>, line 112, in get_or_create_from_urls
1041
1042
1043
1044 <div class="context" id="c140096216597184">
1045
1046 <ol start="105" class="pre-context" id="pre140096216597184">
1047
1048 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre></pre></li>
1049
1050 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> return await asyncio.gather(*task_list)</pre></li>
1051
1052 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre></pre></li>
1053
1054 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> def get_or_create_from_urls(self, urls: Iterable[str], run_async=True):</pre></li>
1055
1056 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> if run_async:</pre></li>
1057
1058 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> get_or_create_from_url_results = async_to_sync(</pre></li>
1059
1060 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> self._gather_async_results_from_get_or_create_from_url)</pre></li>
1061
1062 </ol>
1063
1064 <ol start="112" class="context-line">
1065 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> return get_or_create_from_url_results(urls)</pre> <span>â¦</span></li>
1066 </ol>
1067
1068 <ol start='113' class="post-context" id="post140096216597184">
1069
1070 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> else:</pre></li>
1071
1072 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> return [self.get_or_create_from_url(url, run_async) for url in urls]</pre></li>
1073
1074 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre></pre></li>
1075
1076 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre></pre></li>
1077
1078 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre>class Website(models.Model):</pre></li>
1079
1080 <li onclick="toggle('pre140096216597184', 'post140096216597184')"><pre> url = models.CharField(max_length=100, default=None, null=True, blank=True)</pre></li>
1081
1082 </ol>
1083
1084 </div>
1085
1086
1087
1088 <div class="commands">
1089
1090 <a href="#" onclick="return varToggle(this, '140096216597184')"><span>▶</span> Local vars</a>
1091
1092 </div>
1093 <table class="vars" id="v140096216597184">
1094 <thead>
1095 <tr>
1096 <th>Variable</th>
1097 <th>Value</th>
1098 </tr>
1099 </thead>
1100 <tbody>
1101
1102 <tr>
1103 <td>get_or_create_from_url_results</td>
1104 <td class="code"><pre><asgiref.sync.AsyncToSync object at 0x7f6ab1141460></pre></td>
1105 </tr>
1106
1107 <tr>
1108 <td>run_async</td>
1109 <td class="code"><pre>True</pre></td>
1110 </tr>
1111
1112 <tr>
1113 <td>self</td>
1114 <td class="code"><pre><backlink.models.WebsiteManager object at 0x7f6ac47f79a0></pre></td>
1115 </tr>
1116
1117 <tr>
1118 <td>urls</td>
1119 <td class="code"><pre>['jackjones.com',
1120 'jack-jones.ca',
1121 'bestsellerclothing.com',
1122 'jackjones.in',
1123 'wikipedia.org',
1124 'jakeandjones.com',
1125 'jackandjones.com',
1126 'amazon.com',
1127 'instagram.com',
1128 'apple.com']</pre></td>
1129 </tr>
1130
1131 </tbody>
1132 </table>
1133
1134 </li>
1135
1136
1137 <li class="frame user">
1138
1139 <code class="fname">/usr/local/lib/python3.8/site-packages/asgiref/sync.py</code>, line 222, in __call__
1140
1141
1142
1143 <div class="context" id="c140096216597632">
1144
1145 <ol start="215" class="pre-context" id="pre140096216597632">
1146
1147 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> del self.executors.current</pre></li>
1148
1149 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> if old_current_executor:</pre></li>
1150
1151 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> self.executors.current = old_current_executor</pre></li>
1152
1153 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> if contextvars is not None:</pre></li>
1154
1155 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> _restore_context(context[0])</pre></li>
1156
1157 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre></pre></li>
1158
1159 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> # Wait for results from the future.</pre></li>
1160
1161 </ol>
1162
1163 <ol start="222" class="context-line">
1164 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> return call_result.result()</pre> <span>â¦</span></li>
1165 </ol>
1166
1167 <ol start='223' class="post-context" id="post140096216597632">
1168
1169 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre></pre></li>
1170
1171 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> def _run_event_loop(self, loop, coro):</pre></li>
1172
1173 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> """</pre></li>
1174
1175 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> Runs the given event loop (designed to be called in a thread).</pre></li>
1176
1177 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> """</pre></li>
1178
1179 <li onclick="toggle('pre140096216597632', 'post140096216597632')"><pre> asyncio.set_event_loop(loop)</pre></li>
1180
1181 </ol>
1182
1183 </div>
1184
1185
1186
1187 <div class="commands">
1188
1189 <a href="#" onclick="return varToggle(this, '140096216597632')"><span>▶</span> Local vars</a>
1190
1191 </div>
1192 <table class="vars" id="v140096216597632">
1193 <thead>
1194 <tr>
1195 <th>Variable</th>
1196 <th>Value</th>
1197 </tr>
1198 </thead>
1199 <tbody>
1200
1201 <tr>
1202 <td>args</td>
1203 <td class="code"><pre>(['jackjones.com',
1204 'jack-jones.ca',
1205 'bestsellerclothing.com',
1206 'jackjones.in',
1207 'wikipedia.org',
1208 'jakeandjones.com',
1209 'jackandjones.com',
1210 'amazon.com',
1211 'instagram.com',
1212 'apple.com'],)</pre></td>
1213 </tr>
1214
1215 <tr>
1216 <td>awaitable</td>
1217 <td class="code"><pre><coroutine object AsyncToSync.main_wrap at 0x7f6ab2720a40></pre></td>
1218 </tr>
1219
1220 <tr>
1221 <td>call_result</td>
1222 <td class="code"><pre><Future at 0x7f6ab1141f70 state=finished raised RuntimeError></pre></td>
1223 </tr>
1224
1225 <tr>
1226 <td>context</td>
1227 <td class="code"><pre>[<Context object at 0x7f6ac1b243c0>]</pre></td>
1228 </tr>
1229
1230 <tr>
1231 <td>current_executor</td>
1232 <td class="code"><pre><asgiref.current_thread_executor.CurrentThreadExecutor object at 0x7f6ab1141430></pre></td>
1233 </tr>
1234
1235 <tr>
1236 <td>event_loop</td>
1237 <td class="code"><pre><_UnixSelectorEventLoop running=False closed=False debug=False></pre></td>
1238 </tr>
1239
1240 <tr>
1241 <td>kwargs</td>
1242 <td class="code"><pre>{}</pre></td>
1243 </tr>
1244
1245 <tr>
1246 <td>loop</td>
1247 <td class="code"><pre><_UnixSelectorEventLoop running=False closed=True debug=False></pre></td>
1248 </tr>
1249
1250 <tr>
1251 <td>loop_executor</td>
1252 <td class="code"><pre><concurrent.futures.thread.ThreadPoolExecutor object at 0x7f6ab26491f0></pre></td>
1253 </tr>
1254
1255 <tr>
1256 <td>loop_future</td>
1257 <td class="code"><pre><Future at 0x7f6ab2649a00 state=finished returned NoneType></pre></td>
1258 </tr>
1259
1260 <tr>
1261 <td>old_current_executor</td>
1262 <td class="code"><pre>None</pre></td>
1263 </tr>
1264
1265 <tr>
1266 <td>self</td>
1267 <td class="code"><pre><asgiref.sync.AsyncToSync object at 0x7f6ab1141460></pre></td>
1268 </tr>
1269
1270 <tr>
1271 <td>source_thread</td>
1272 <td class="code"><pre><_MainThread(MainThread, started 140096971044672)></pre></td>
1273 </tr>
1274
1275 </tbody>
1276 </table>
1277
1278 </li>
1279
1280
1281 <li class="frame user">
1282
1283 <code class="fname">/usr/local/lib/python3.8/concurrent/futures/_base.py</code>, line 437, in result
1284
1285
1286
1287 <div class="context" id="c140096216598080">
1288
1289 <ol start="430" class="pre-context" id="pre140096216598080">
1290
1291 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> Exception: If the call raised then that exception will be raised.</pre></li>
1292
1293 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> """</pre></li>
1294
1295 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> try:</pre></li>
1296
1297 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> with self._condition:</pre></li>
1298
1299 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]:</pre></li>
1300
1301 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> raise CancelledError()</pre></li>
1302
1303 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> elif self._state == FINISHED:</pre></li>
1304
1305 </ol>
1306
1307 <ol start="437" class="context-line">
1308 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> return self.__get_result()</pre> <span>â¦</span></li>
1309 </ol>
1310
1311 <ol start='438' class="post-context" id="post140096216598080">
1312
1313 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre></pre></li>
1314
1315 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> self._condition.wait(timeout)</pre></li>
1316
1317 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre></pre></li>
1318
1319 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]:</pre></li>
1320
1321 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> raise CancelledError()</pre></li>
1322
1323 <li onclick="toggle('pre140096216598080', 'post140096216598080')"><pre> elif self._state == FINISHED:</pre></li>
1324
1325 </ol>
1326
1327 </div>
1328
1329
1330
1331 <div class="commands">
1332
1333 <a href="#" onclick="return varToggle(this, '140096216598080')"><span>▶</span> Local vars</a>
1334
1335 </div>
1336 <table class="vars" id="v140096216598080">
1337 <thead>
1338 <tr>
1339 <th>Variable</th>
1340 <th>Value</th>
1341 </tr>
1342 </thead>
1343 <tbody>
1344
1345 <tr>
1346 <td>self</td>
1347 <td class="code"><pre>None</pre></td>
1348 </tr>
1349
1350 <tr>
1351 <td>timeout</td>
1352 <td class="code"><pre>None</pre></td>
1353 </tr>
1354
1355 </tbody>
1356 </table>
1357
1358 </li>
1359
1360
1361 <li class="frame user">
1362
1363 <code class="fname">/usr/local/lib/python3.8/concurrent/futures/_base.py</code>, line 389, in __get_result
1364
1365
1366
1367 <div class="context" id="c140096245423424">
1368
1369 <ol start="382" class="pre-context" id="pre140096245423424">
1370
1371 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> """Return True of the future was cancelled or finished executing."""</pre></li>
1372
1373 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> with self._condition:</pre></li>
1374
1375 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> return self._state in [CANCELLED, CANCELLED_AND_NOTIFIED, FINISHED]</pre></li>
1376
1377 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre></pre></li>
1378
1379 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> def __get_result(self):</pre></li>
1380
1381 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> if self._exception:</pre></li>
1382
1383 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> try:</pre></li>
1384
1385 </ol>
1386
1387 <ol start="389" class="context-line">
1388 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> raise self._exception</pre> <span>â¦</span></li>
1389 </ol>
1390
1391 <ol start='390' class="post-context" id="post140096245423424">
1392
1393 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> finally:</pre></li>
1394
1395 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> # Break a reference cycle with the exception in self._exception</pre></li>
1396
1397 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> self = None</pre></li>
1398
1399 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> else:</pre></li>
1400
1401 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre> return self._result</pre></li>
1402
1403 <li onclick="toggle('pre140096245423424', 'post140096245423424')"><pre></pre></li>
1404
1405 </ol>
1406
1407 </div>
1408
1409
1410
1411 <div class="commands">
1412
1413 <a href="#" onclick="return varToggle(this, '140096245423424')"><span>▶</span> Local vars</a>
1414
1415 </div>
1416 <table class="vars" id="v140096245423424">
1417 <thead>
1418 <tr>
1419 <th>Variable</th>
1420 <th>Value</th>
1421 </tr>
1422 </thead>
1423 <tbody>
1424
1425 <tr>
1426 <td>self</td>
1427 <td class="code"><pre>None</pre></td>
1428 </tr>
1429
1430 </tbody>
1431 </table>
1432
1433 </li>
1434
1435
1436 <li class="frame user">
1437
1438 <code class="fname">/usr/local/lib/python3.8/site-packages/asgiref/sync.py</code>, line 287, in main_wrap
1439
1440
1441
1442 <div class="context" id="c140096470011264">
1443
1444 <ol start="280" class="pre-context" id="pre140096470011264">
1445
1446 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> # after raising it so exc_info is correctly populated.</pre></li>
1447
1448 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> if exc_info[1]:</pre></li>
1449
1450 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> try:</pre></li>
1451
1452 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> raise exc_info[1]</pre></li>
1453
1454 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> except BaseException:</pre></li>
1455
1456 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> result = await self.awaitable(*args, **kwargs)</pre></li>
1457
1458 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> else:</pre></li>
1459
1460 </ol>
1461
1462 <ol start="287" class="context-line">
1463 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> result = await self.awaitable(*args, **kwargs)</pre> <span>â¦</span></li>
1464 </ol>
1465
1466 <ol start='288' class="post-context" id="post140096470011264">
1467
1468 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> except BaseException as e:</pre></li>
1469
1470 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> call_result.set_exception(e)</pre></li>
1471
1472 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> else:</pre></li>
1473
1474 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> call_result.set_result(result)</pre></li>
1475
1476 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> finally:</pre></li>
1477
1478 <li onclick="toggle('pre140096470011264', 'post140096470011264')"><pre> del self.launch_map[current_task]</pre></li>
1479
1480 </ol>
1481
1482 </div>
1483
1484
1485
1486 <div class="commands">
1487
1488 <a href="#" onclick="return varToggle(this, '140096470011264')"><span>▶</span> Local vars</a>
1489
1490 </div>
1491 <table class="vars" id="v140096470011264">
1492 <thead>
1493 <tr>
1494 <th>Variable</th>
1495 <th>Value</th>
1496 </tr>
1497 </thead>
1498 <tbody>
1499
1500 <tr>
1501 <td>args</td>
1502 <td class="code"><pre>(['jackjones.com',
1503 'jack-jones.ca',
1504 'bestsellerclothing.com',
1505 'jackjones.in',
1506 'wikipedia.org',
1507 'jakeandjones.com',
1508 'jackandjones.com',
1509 'amazon.com',
1510 'instagram.com',
1511 'apple.com'],)</pre></td>
1512 </tr>
1513
1514 <tr>
1515 <td>call_result</td>
1516 <td class="code"><pre><Future at 0x7f6ab1141f70 state=finished raised RuntimeError></pre></td>
1517 </tr>
1518
1519 <tr>
1520 <td>context</td>
1521 <td class="code"><pre>[<Context object at 0x7f6ac1b243c0>]</pre></td>
1522 </tr>
1523
1524 <tr>
1525 <td>current_task</td>
1526 <td class="code"><pre><Task finished name='Task-206' coro=<AsyncToSync.main_wrap() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:266> result=None></pre></td>
1527 </tr>
1528
1529 <tr>
1530 <td>exc_info</td>
1531 <td class="code"><pre>(None, None, None)</pre></td>
1532 </tr>
1533
1534 <tr>
1535 <td>kwargs</td>
1536 <td class="code"><pre>{}</pre></td>
1537 </tr>
1538
1539 <tr>
1540 <td>self</td>
1541 <td class="code"><pre><asgiref.sync.AsyncToSync object at 0x7f6ab1141460></pre></td>
1542 </tr>
1543
1544 <tr>
1545 <td>source_thread</td>
1546 <td class="code"><pre><_MainThread(MainThread, started 140096971044672)></pre></td>
1547 </tr>
1548
1549 </tbody>
1550 </table>
1551
1552 </li>
1553
1554
1555 <li class="frame user">
1556
1557 <code class="fname">/usr/src/app/backlink/models.py</code>, line 106, in _gather_async_results_from_get_or_create_from_url
1558
1559
1560
1561 <div class="context" id="c140096481067456">
1562
1563 <ol start="99" class="pre-context" id="pre140096481067456">
1564
1565 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre></pre></li>
1566
1567 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> for url in urls:</pre></li>
1568
1569 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> future = asyncio.create_task(</pre></li>
1570
1571 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> get_or_create_from_url_async(url, run_async=True)</pre></li>
1572
1573 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> )</pre></li>
1574
1575 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> task_list.append(future)</pre></li>
1576
1577 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre></pre></li>
1578
1579 </ol>
1580
1581 <ol start="106" class="context-line">
1582 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> return await asyncio.gather(*task_list)</pre> <span>â¦</span></li>
1583 </ol>
1584
1585 <ol start='107' class="post-context" id="post140096481067456">
1586
1587 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre></pre></li>
1588
1589 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> def get_or_create_from_urls(self, urls: Iterable[str], run_async=True):</pre></li>
1590
1591 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> if run_async:</pre></li>
1592
1593 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> get_or_create_from_url_results = async_to_sync(</pre></li>
1594
1595 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> self._gather_async_results_from_get_or_create_from_url)</pre></li>
1596
1597 <li onclick="toggle('pre140096481067456', 'post140096481067456')"><pre> return get_or_create_from_url_results(urls)</pre></li>
1598
1599 </ol>
1600
1601 </div>
1602
1603
1604
1605 <div class="commands">
1606
1607 <a href="#" onclick="return varToggle(this, '140096481067456')"><span>▶</span> Local vars</a>
1608
1609 </div>
1610 <table class="vars" id="v140096481067456">
1611 <thead>
1612 <tr>
1613 <th>Variable</th>
1614 <th>Value</th>
1615 </tr>
1616 </thead>
1617 <tbody>
1618
1619 <tr>
1620 <td>future</td>
1621 <td class="code"><pre><Task cancelled name='Task-216' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>></pre></td>
1622 </tr>
1623
1624 <tr>
1625 <td>get_or_create_from_url_async</td>
1626 <td class="code"><pre><asgiref.sync.SyncToAsync object at 0x7f6ab2649910></pre></td>
1627 </tr>
1628
1629 <tr>
1630 <td>self</td>
1631 <td class="code"><pre><backlink.models.WebsiteManager object at 0x7f6ac47f79a0></pre></td>
1632 </tr>
1633
1634 <tr>
1635 <td>task_list</td>
1636 <td class="code"><pre>[<Task finished name='Task-207' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> result=<Website: jac... -> None rows>>,
1637 <Task finished name='Task-208' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> result=<Website: jac... -> None rows>>,
1638 <Task finished name='Task-209' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> result=<Website: bes... -> None rows>>,
1639 <Task finished name='Task-210' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> result=<Website: jac... -> None rows>>,
1640 <Task finished name='Task-211' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> result=<Website: wik...ne -> 79 rows>>,
1641 <Task finished name='Task-212' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> exception=RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")>,
1642 <Task cancelled name='Task-213' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>,
1643 <Task cancelled name='Task-214' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>,
1644 <Task cancelled name='Task-215' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>,
1645 <Task cancelled name='Task-216' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>]</pre></td>
1646 </tr>
1647
1648 <tr>
1649 <td>url</td>
1650 <td class="code"><pre>'apple.com'</pre></td>
1651 </tr>
1652
1653 <tr>
1654 <td>urls</td>
1655 <td class="code"><pre>['jackjones.com',
1656 'jack-jones.ca',
1657 'bestsellerclothing.com',
1658 'jackjones.in',
1659 'wikipedia.org',
1660 'jakeandjones.com',
1661 'jackandjones.com',
1662 'amazon.com',
1663 'instagram.com',
1664 'apple.com']</pre></td>
1665 </tr>
1666
1667 </tbody>
1668 </table>
1669
1670 </li>
1671
1672
1673 <li class="frame user">
1674
1675 <code class="fname">/usr/local/lib/python3.8/site-packages/asgiref/sync.py</code>, line 423, in __call__
1676
1677
1678
1679 <div class="context" id="c140096214333696">
1680
1681 <ol start="416" class="pre-context" id="pre140096214333696">
1682
1683 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> self.get_current_task(),</pre></li>
1684
1685 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> sys.exc_info(),</pre></li>
1686
1687 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> func,</pre></li>
1688
1689 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> *args,</pre></li>
1690
1691 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> **kwargs,</pre></li>
1692
1693 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> ),</pre></li>
1694
1695 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> )</pre></li>
1696
1697 </ol>
1698
1699 <ol start="423" class="context-line">
1700 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> ret = await asyncio.wait_for(future, timeout=None)</pre> <span>â¦</span></li>
1701 </ol>
1702
1703 <ol start='424' class="post-context" id="post140096214333696">
1704
1705 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre></pre></li>
1706
1707 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> if contextvars is not None:</pre></li>
1708
1709 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> _restore_context(context)</pre></li>
1710
1711 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre></pre></li>
1712
1713 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre> return ret</pre></li>
1714
1715 <li onclick="toggle('pre140096214333696', 'post140096214333696')"><pre></pre></li>
1716
1717 </ol>
1718
1719 </div>
1720
1721
1722
1723 <div class="commands">
1724
1725 <a href="#" onclick="return varToggle(this, '140096214333696')"><span>▶</span> Local vars</a>
1726
1727 </div>
1728 <table class="vars" id="v140096214333696">
1729 <thead>
1730 <tr>
1731 <th>Variable</th>
1732 <th>Value</th>
1733 </tr>
1734 </thead>
1735 <tbody>
1736
1737 <tr>
1738 <td>args</td>
1739 <td class="code"><pre>(functools.partial(<function WebsiteManager._get_or_create_from_url_base_method at 0x7f6ac4869ee0>, 'jakeandjones.com', run_async=True),)</pre></td>
1740 </tr>
1741
1742 <tr>
1743 <td>child</td>
1744 <td class="code"><pre>functools.partial(<function WebsiteManager._get_or_create_from_url_base_method at 0x7f6ac4869ee0>, 'jakeandjones.com', run_async=True)</pre></td>
1745 </tr>
1746
1747 <tr>
1748 <td>context</td>
1749 <td class="code"><pre><Context object at 0x7f6ac235d140></pre></td>
1750 </tr>
1751
1752 <tr>
1753 <td>executor</td>
1754 <td class="code"><pre><concurrent.futures.thread.ThreadPoolExecutor object at 0x7f6adbf5f610></pre></td>
1755 </tr>
1756
1757 <tr>
1758 <td>func</td>
1759 <td class="code"><pre><built-in method run of Context object at 0x7f6ac235d140></pre></td>
1760 </tr>
1761
1762 <tr>
1763 <td>future</td>
1764 <td class="code"><pre><Future finished exception=RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")></pre></td>
1765 </tr>
1766
1767 <tr>
1768 <td>kwargs</td>
1769 <td class="code"><pre>{}</pre></td>
1770 </tr>
1771
1772 <tr>
1773 <td>loop</td>
1774 <td class="code"><pre><_UnixSelectorEventLoop running=False closed=True debug=False></pre></td>
1775 </tr>
1776
1777 <tr>
1778 <td>self</td>
1779 <td class="code"><pre><asgiref.sync.SyncToAsync object at 0x7f6ab2649910></pre></td>
1780 </tr>
1781
1782 </tbody>
1783 </table>
1784
1785 </li>
1786
1787
1788 <li class="frame user">
1789
1790 <code class="fname">/usr/local/lib/python3.8/asyncio/tasks.py</code>, line 455, in wait_for
1791
1792
1793
1794 <div class="context" id="c140096214333376">
1795
1796 <ol start="448" class="pre-context" id="pre140096214333376">
1797
1798 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> loop = events.get_running_loop()</pre></li>
1799
1800 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> else:</pre></li>
1801
1802 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> warnings.warn("The loop argument is deprecated since Python 3.8, "</pre></li>
1803
1804 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> "and scheduled for removal in Python 3.10.",</pre></li>
1805
1806 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> DeprecationWarning, stacklevel=2)</pre></li>
1807
1808 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre></pre></li>
1809
1810 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> if timeout is None:</pre></li>
1811
1812 </ol>
1813
1814 <ol start="455" class="context-line">
1815 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> return await fut</pre> <span>â¦</span></li>
1816 </ol>
1817
1818 <ol start='456' class="post-context" id="post140096214333376">
1819
1820 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre></pre></li>
1821
1822 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> if timeout <= 0:</pre></li>
1823
1824 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> fut = ensure_future(fut, loop=loop)</pre></li>
1825
1826 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre></pre></li>
1827
1828 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> if fut.done():</pre></li>
1829
1830 <li onclick="toggle('pre140096214333376', 'post140096214333376')"><pre> return fut.result()</pre></li>
1831
1832 </ol>
1833
1834 </div>
1835
1836
1837
1838 <div class="commands">
1839
1840 <a href="#" onclick="return varToggle(this, '140096214333376')"><span>▶</span> Local vars</a>
1841
1842 </div>
1843 <table class="vars" id="v140096214333376">
1844 <thead>
1845 <tr>
1846 <th>Variable</th>
1847 <th>Value</th>
1848 </tr>
1849 </thead>
1850 <tbody>
1851
1852 <tr>
1853 <td>fut</td>
1854 <td class="code"><pre><Future finished exception=RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")></pre></td>
1855 </tr>
1856
1857 <tr>
1858 <td>loop</td>
1859 <td class="code"><pre><_UnixSelectorEventLoop running=False closed=True debug=False></pre></td>
1860 </tr>
1861
1862 <tr>
1863 <td>timeout</td>
1864 <td class="code"><pre>None</pre></td>
1865 </tr>
1866
1867 </tbody>
1868 </table>
1869
1870 </li>
1871
1872
1873 <li class="frame user">
1874
1875 <code class="fname">/usr/local/lib/python3.8/concurrent/futures/thread.py</code>, line 57, in run
1876
1877
1878
1879 <div class="context" id="c140096216597888">
1880
1881 <ol start="50" class="pre-context" id="pre140096216597888">
1882
1883 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> self.kwargs = kwargs</pre></li>
1884
1885 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre></pre></li>
1886
1887 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> def run(self):</pre></li>
1888
1889 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> if not self.future.set_running_or_notify_cancel():</pre></li>
1890
1891 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> return</pre></li>
1892
1893 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre></pre></li>
1894
1895 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> try:</pre></li>
1896
1897 </ol>
1898
1899 <ol start="57" class="context-line">
1900 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> result = self.fn(*self.args, **self.kwargs)</pre> <span>â¦</span></li>
1901 </ol>
1902
1903 <ol start='58' class="post-context" id="post140096216597888">
1904
1905 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> except BaseException as exc:</pre></li>
1906
1907 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> self.future.set_exception(exc)</pre></li>
1908
1909 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> # Break a reference cycle with the exception 'exc'</pre></li>
1910
1911 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> self = None</pre></li>
1912
1913 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> else:</pre></li>
1914
1915 <li onclick="toggle('pre140096216597888', 'post140096216597888')"><pre> self.future.set_result(result)</pre></li>
1916
1917 </ol>
1918
1919 </div>
1920
1921
1922
1923 <div class="commands">
1924
1925 <a href="#" onclick="return varToggle(this, '140096216597888')"><span>▶</span> Local vars</a>
1926
1927 </div>
1928 <table class="vars" id="v140096216597888">
1929 <thead>
1930 <tr>
1931 <th>Variable</th>
1932 <th>Value</th>
1933 </tr>
1934 </thead>
1935 <tbody>
1936
1937 <tr>
1938 <td>self</td>
1939 <td class="code"><pre>None</pre></td>
1940 </tr>
1941
1942 </tbody>
1943 </table>
1944
1945 </li>
1946
1947
1948 <li class="frame user">
1949
1950 <code class="fname">/usr/local/lib/python3.8/site-packages/asgiref/sync.py</code>, line 462, in thread_handler
1951
1952
1953
1954 <div class="context" id="c140096216596992">
1955
1956 <ol start="455" class="pre-context" id="pre140096216596992">
1957
1958 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> # after raising it so exc_info is correctly populated.</pre></li>
1959
1960 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> if exc_info[1]:</pre></li>
1961
1962 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> try:</pre></li>
1963
1964 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> raise exc_info[1]</pre></li>
1965
1966 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> except BaseException:</pre></li>
1967
1968 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> return func(*args, **kwargs)</pre></li>
1969
1970 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> else:</pre></li>
1971
1972 </ol>
1973
1974 <ol start="462" class="context-line">
1975 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> return func(*args, **kwargs)</pre> <span>â¦</span></li>
1976 </ol>
1977
1978 <ol start='463' class="post-context" id="post140096216596992">
1979
1980 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> finally:</pre></li>
1981
1982 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> # Only delete the launch_map parent if we set it, otherwise it is</pre></li>
1983
1984 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> # from someone else.</pre></li>
1985
1986 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> if parent_set:</pre></li>
1987
1988 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre> del self.launch_map[current_thread]</pre></li>
1989
1990 <li onclick="toggle('pre140096216596992', 'post140096216596992')"><pre></pre></li>
1991
1992 </ol>
1993
1994 </div>
1995
1996
1997
1998 <div class="commands">
1999
2000 <a href="#" onclick="return varToggle(this, '140096216596992')"><span>▶</span> Local vars</a>
2001
2002 </div>
2003 <table class="vars" id="v140096216596992">
2004 <thead>
2005 <tr>
2006 <th>Variable</th>
2007 <th>Value</th>
2008 </tr>
2009 </thead>
2010 <tbody>
2011
2012 <tr>
2013 <td>args</td>
2014 <td class="code"><pre>(functools.partial(<function WebsiteManager._get_or_create_from_url_base_method at 0x7f6ac4869ee0>, 'jakeandjones.com', run_async=True),)</pre></td>
2015 </tr>
2016
2017 <tr>
2018 <td>current_thread</td>
2019 <td class="code"><pre><Thread(ThreadPoolExecutor-0_0, started daemon 140096513824512)></pre></td>
2020 </tr>
2021
2022 <tr>
2023 <td>exc_info</td>
2024 <td class="code"><pre>(None, None, None)</pre></td>
2025 </tr>
2026
2027 <tr>
2028 <td>func</td>
2029 <td class="code"><pre><built-in method run of Context object at 0x7f6ac235d140></pre></td>
2030 </tr>
2031
2032 <tr>
2033 <td>kwargs</td>
2034 <td class="code"><pre>{}</pre></td>
2035 </tr>
2036
2037 <tr>
2038 <td>loop</td>
2039 <td class="code"><pre><_UnixSelectorEventLoop running=False closed=True debug=False></pre></td>
2040 </tr>
2041
2042 <tr>
2043 <td>parent_set</td>
2044 <td class="code"><pre>True</pre></td>
2045 </tr>
2046
2047 <tr>
2048 <td>self</td>
2049 <td class="code"><pre><asgiref.sync.SyncToAsync object at 0x7f6ab2649910></pre></td>
2050 </tr>
2051
2052 <tr>
2053 <td>source_task</td>
2054 <td class="code"><pre><Task finished name='Task-212' coro=<SyncToAsync.__call__() done, defined at /usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> exception=RuntimeError("There is no current event loop in thread 'ThreadPoolExecutor-0_0'.")></pre></td>
2055 </tr>
2056
2057 </tbody>
2058 </table>
2059
2060 </li>
2061
2062
2063 <li class="frame user">
2064
2065 <code class="fname">/usr/src/app/backlink/models.py</code>, line 84, in _get_or_create_from_url_base_method
2066
2067
2068
2069 <div class="context" id="c140096216597056">
2070
2071 <ol start="77" class="pre-context" id="pre140096216597056">
2072
2073 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> tld=data['tld'],</pre></li>
2074
2075 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> defaults=dict(url=url, title=data['title'])</pre></li>
2076
2077 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> )</pre></li>
2078
2079 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> stopwatch_instance.click('GET OR CREATE')</pre></li>
2080
2081 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> stopwatch_instance.click('CALLBACKS')</pre></li>
2082
2083 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> if was_created:</pre></li>
2084
2085 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> logger.debug(f'Created new Website for URL: {url}.')</pre></li>
2086
2087 </ol>
2088
2089 <ol start="84" class="context-line">
2090 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> website.on_created(run_async)</pre> <span>â¦</span></li>
2091 </ol>
2092
2093 <ol start='85' class="post-context" id="post140096216597056">
2094
2095 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> else:</pre></li>
2096
2097 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> logger.debug(f'Existing website: {url} id: {website.id}')</pre></li>
2098
2099 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> stopwatch_instance.click('CALLBACKS')</pre></li>
2100
2101 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> stopwatch_instance.log_overall_time()</pre></li>
2102
2103 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre> return website</pre></li>
2104
2105 <li onclick="toggle('pre140096216597056', 'post140096216597056')"><pre></pre></li>
2106
2107 </ol>
2108
2109 </div>
2110
2111
2112
2113 <div class="commands">
2114
2115 <a href="#" onclick="return varToggle(this, '140096216597056')"><span>▶</span> Local vars</a>
2116
2117 </div>
2118 <table class="vars" id="v140096216597056">
2119 <thead>
2120 <tr>
2121 <th>Variable</th>
2122 <th>Value</th>
2123 </tr>
2124 </thead>
2125 <tbody>
2126
2127 <tr>
2128 <td>data</td>
2129 <td class="code"><pre>{'domain': 'jakeandjones.com',
2130 'hostname': 'jakeandjones.com',
2131 'title': 'jakeandjones',
2132 'tld': 'com'}</pre></td>
2133 </tr>
2134
2135 <tr>
2136 <td>run_async</td>
2137 <td class="code"><pre>True</pre></td>
2138 </tr>
2139
2140 <tr>
2141 <td>stopwatch_instance</td>
2142 <td class="code"><pre><utils.profiling.Stopwatch object at 0x7f6ac05f0550></pre></td>
2143 </tr>
2144
2145 <tr>
2146 <td>url</td>
2147 <td class="code"><pre>'jakeandjones.com'</pre></td>
2148 </tr>
2149
2150 <tr>
2151 <td>was_created</td>
2152 <td class="code"><pre>True</pre></td>
2153 </tr>
2154
2155 <tr>
2156 <td>website</td>
2157 <td class="code"><pre><Website: jakeandjones.com | ahrefsbacklinks:None -> None rows | majesticbacklinks:None -> None rows | urldownload:None -> None rows | urlclassify:None -> None rows | toxicity:None -> None rows></pre></td>
2158 </tr>
2159
2160 </tbody>
2161 </table>
2162
2163 </li>
2164
2165
2166 <li class="frame user">
2167
2168 <code class="fname">/usr/src/app/backlink/models.py</code>, line 287, in on_created
2169
2170
2171
2172 <div class="context" id="c140096216597376">
2173
2174 <ol start="280" class="pre-context" id="pre140096216597376">
2175
2176 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> """</pre></li>
2177
2178 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> This method gets called after a new Website gets created</pre></li>
2179
2180 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> """</pre></li>
2181
2182 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> stopwatch_instance = Stopwatch('Website.on_created')</pre></li>
2183
2184 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> self.pull_ahrefs_backlinks(run_async=run_async)</pre></li>
2185
2186 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> self.pull_majestic_backlinks(run_async=run_async)</pre></li>
2187
2188 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> stopwatch_instance.click('pull_website_stats_ahrefs')</pre></li>
2189
2190 </ol>
2191
2192 <ol start="287" class="context-line">
2193 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> self.pull_website_stats_ahrefs()</pre> <span>â¦</span></li>
2194 </ol>
2195
2196 <ol start='288' class="post-context" id="post140096216597376">
2197
2198 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> stopwatch_instance.click('pull_website_stats_ahrefs')</pre></li>
2199
2200 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> stopwatch_instance.click('pull_screenshot')</pre></li>
2201
2202 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> self._call_task('pull_screenshot', self, run_async)</pre></li>
2203
2204 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> stopwatch_instance.click('pull_screenshot')</pre></li>
2205
2206 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> stopwatch_instance.log_overall_time()</pre></li>
2207
2208 <li onclick="toggle('pre140096216597376', 'post140096216597376')"><pre> # START - Celery Task Management Methods</pre></li>
2209
2210 </ol>
2211
2212 </div>
2213
2214
2215
2216 <div class="commands">
2217
2218 <a href="#" onclick="return varToggle(this, '140096216597376')"><span>▶</span> Local vars</a>
2219
2220 </div>
2221 <table class="vars" id="v140096216597376">
2222 <thead>
2223 <tr>
2224 <th>Variable</th>
2225 <th>Value</th>
2226 </tr>
2227 </thead>
2228 <tbody>
2229
2230 <tr>
2231 <td>run_async</td>
2232 <td class="code"><pre>True</pre></td>
2233 </tr>
2234
2235 <tr>
2236 <td>self</td>
2237 <td class="code"><pre><Website: jakeandjones.com | ahrefsbacklinks:None -> None rows | majesticbacklinks:None -> None rows | urldownload:None -> None rows | urlclassify:None -> None rows | toxicity:None -> None rows></pre></td>
2238 </tr>
2239
2240 <tr>
2241 <td>stopwatch_instance</td>
2242 <td class="code"><pre><utils.profiling.Stopwatch object at 0x7f6ab2649fd0></pre></td>
2243 </tr>
2244
2245 </tbody>
2246 </table>
2247
2248 </li>
2249
2250
2251 <li class="frame user">
2252
2253 <code class="fname">/usr/src/app/backlink/models.py</code>, line 235, in pull_website_stats_ahrefs
2254
2255
2256
2257 <div class="context" id="c140096216597440">
2258
2259 <ol start="228" class="pre-context" id="pre140096216597440">
2260
2261 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> 4) ahrefs_refdomain_count</pre></li>
2262
2263 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> 5) ahrefs_website_stats_updated_at</pre></li>
2264
2265 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> """</pre></li>
2266
2267 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> from vendor.ahrefs.api import update_website_stats</pre></li>
2268
2269 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> if self.ahrefs_website_stats_updated_at and self.ahrefs_website_stats_updated_at > timezone.now() - datetime.timedelta(days=30):</pre></li>
2270
2271 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> logger.info('Skipping update, data has been updated within the last 30 days...')</pre></li>
2272
2273 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> return</pre></li>
2274
2275 </ol>
2276
2277 <ol start="235" class="context-line">
2278 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> update_website_stats(self)</pre> <span>â¦</span></li>
2279 </ol>
2280
2281 <ol start='236' class="post-context" id="post140096216597440">
2282
2283 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre></pre></li>
2284
2285 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> def pull_majestic_backlinks(self, run_async=False, force=False):</pre></li>
2286
2287 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> """</pre></li>
2288
2289 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> The main method used to pull Majestic backlinks for a Website</pre></li>
2290
2291 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> """</pre></li>
2292
2293 <li onclick="toggle('pre140096216597440', 'post140096216597440')"><pre> if not self.should_process_majestic_backlinks:</pre></li>
2294
2295 </ol>
2296
2297 </div>
2298
2299
2300
2301 <div class="commands">
2302
2303 <a href="#" onclick="return varToggle(this, '140096216597440')"><span>▶</span> Local vars</a>
2304
2305 </div>
2306 <table class="vars" id="v140096216597440">
2307 <thead>
2308 <tr>
2309 <th>Variable</th>
2310 <th>Value</th>
2311 </tr>
2312 </thead>
2313 <tbody>
2314
2315 <tr>
2316 <td>self</td>
2317 <td class="code"><pre><Website: jakeandjones.com | ahrefsbacklinks:None -> None rows | majesticbacklinks:None -> None rows | urldownload:None -> None rows | urlclassify:None -> None rows | toxicity:None -> None rows></pre></td>
2318 </tr>
2319
2320 <tr>
2321 <td>update_website_stats</td>
2322 <td class="code"><pre><function update_website_stats at 0x7f6ac5bb68b0></pre></td>
2323 </tr>
2324
2325 </tbody>
2326 </table>
2327
2328 </li>
2329
2330
2331 <li class="frame user">
2332
2333 <code class="fname">/usr/src/app/vendor/ahrefs/api.py</code>, line 53, in update_website_stats
2334
2335
2336
2337 <div class="context" id="c140096216598656">
2338
2339 <ol start="46" class="pre-context" id="pre140096216598656">
2340
2341 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> Performs 2 API calls to get this data.</pre></li>
2342
2343 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> """</pre></li>
2344
2345 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> stopwatch_instance = Stopwatch('ahrefs.api.update_website_stats')</pre></li>
2346
2347 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> stopwatch_instance.click('FETCH DATA')</pre></li>
2348
2349 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> hostname = website_obj.hostname</pre></li>
2350
2351 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> api = APIClient()</pre></li>
2352
2353 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> logger.info(f"Fetching data for {hostname} from ahrefs vendor")</pre></li>
2354
2355 </ol>
2356
2357 <ol start="53" class="context-line">
2358 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> response = {**api.get_positions_metrics(hostname, run_async=True),</pre> <span>â¦</span></li>
2359 </ol>
2360
2361 <ol start='54' class="post-context" id="post140096216598656">
2362
2363 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> **api.get_pages_extended_for_url(hostname, run_async=True),</pre></li>
2364
2365 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> **api.get_dr_and_ur_for_url(hostname, run_async=True)}</pre></li>
2366
2367 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> stopwatch_instance.click('FETCH DATA')</pre></li>
2368
2369 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> stopwatch_instance.click('SAVE NEW DATA')</pre></li>
2370
2371 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre></pre></li>
2372
2373 <li onclick="toggle('pre140096216598656', 'post140096216598656')"><pre> internal_to_external = {</pre></li>
2374
2375 </ol>
2376
2377 </div>
2378
2379
2380
2381 <div class="commands">
2382
2383 <a href="#" onclick="return varToggle(this, '140096216598656')"><span>▶</span> Local vars</a>
2384
2385 </div>
2386 <table class="vars" id="v140096216598656">
2387 <thead>
2388 <tr>
2389 <th>Variable</th>
2390 <th>Value</th>
2391 </tr>
2392 </thead>
2393 <tbody>
2394
2395 <tr>
2396 <td>api</td>
2397 <td class="code"><pre><vendor.ahrefs.api.APIClient object at 0x7f6ac0037e50></pre></td>
2398 </tr>
2399
2400 <tr>
2401 <td>hostname</td>
2402 <td class="code"><pre>'jakeandjones.com'</pre></td>
2403 </tr>
2404
2405 <tr>
2406 <td>stopwatch_instance</td>
2407 <td class="code"><pre><utils.profiling.Stopwatch object at 0x7f6ac059fac0></pre></td>
2408 </tr>
2409
2410 <tr>
2411 <td>website_obj</td>
2412 <td class="code"><pre><Website: jakeandjones.com | ahrefsbacklinks:None -> None rows | majesticbacklinks:None -> None rows | urldownload:None -> None rows | urlclassify:None -> None rows | toxicity:None -> None rows></pre></td>
2413 </tr>
2414
2415 </tbody>
2416 </table>
2417
2418 </li>
2419
2420
2421 <li class="frame user">
2422
2423 <code class="fname">/usr/src/app/vendor/ahrefs/api.py</code>, line 273, in get_positions_metrics
2424
2425
2426
2427 <div class="context" id="c140096216597696">
2428
2429 <ol start="266" class="pre-context" id="pre140096216597696">
2430
2431 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> 'from': 'positions_metrics',</pre></li>
2432
2433 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> 'mode': 'subdomains',</pre></li>
2434
2435 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> 'limit': limit,</pre></li>
2436
2437 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> 'target': target,</pre></li>
2438
2439 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> 'output': 'json',</pre></li>
2440
2441 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> 'token': self.get_token(),</pre></li>
2442
2443 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> }</pre></li>
2444
2445 </ol>
2446
2447 <ol start="273" class="context-line">
2448 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> response = self.get(params, run_async=run_async)['metrics']</pre> <span>â¦</span></li>
2449 </ol>
2450
2451 <ol start='274' class="post-context" id="post140096216597696">
2452
2453 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> logger.info(f"Position_metris {response}")</pre></li>
2454
2455 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> return response</pre></li>
2456
2457 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre></pre></li>
2458
2459 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre></pre></li>
2460
2461 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre>async def fetch(url, params, session):</pre></li>
2462
2463 <li onclick="toggle('pre140096216597696', 'post140096216597696')"><pre> while True:</pre></li>
2464
2465 </ol>
2466
2467 </div>
2468
2469
2470
2471 <div class="commands">
2472
2473 <a href="#" onclick="return varToggle(this, '140096216597696')"><span>▶</span> Local vars</a>
2474
2475 </div>
2476 <table class="vars" id="v140096216597696">
2477 <thead>
2478 <tr>
2479 <th>Variable</th>
2480 <th>Value</th>
2481 </tr>
2482 </thead>
2483 <tbody>
2484
2485 <tr>
2486 <td>limit</td>
2487 <td class="code"><pre>1000</pre></td>
2488 </tr>
2489
2490 <tr>
2491 <td>params</td>
2492 <td class="code"><pre>{'from': 'positions_metrics',
2493 'limit': 1000,
2494 'mode': 'subdomains',
2495 'output': 'json',
2496 'target': 'jakeandjones.com',
2497 'token': '_VdtvfJ_POoce00XymccszGiO-0ltyC4g7ctpF8H'}</pre></td>
2498 </tr>
2499
2500 <tr>
2501 <td>run_async</td>
2502 <td class="code"><pre>True</pre></td>
2503 </tr>
2504
2505 <tr>
2506 <td>self</td>
2507 <td class="code"><pre><vendor.ahrefs.api.APIClient object at 0x7f6ac0037e50></pre></td>
2508 </tr>
2509
2510 <tr>
2511 <td>target</td>
2512 <td class="code"><pre>'jakeandjones.com'</pre></td>
2513 </tr>
2514
2515 </tbody>
2516 </table>
2517
2518 </li>
2519
2520
2521 <li class="frame user">
2522
2523 <code class="fname">/usr/src/app/vendor/ahrefs/api.py</code>, line 106, in get
2524
2525
2526
2527 <div class="context" id="c140096216599872">
2528
2529 <ol start="99" class="pre-context" id="pre140096216599872">
2530
2531 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> self.do_async = do_async</pre></li>
2532
2533 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> self.tasks = tasks</pre></li>
2534
2535 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre></pre></li>
2536
2537 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> def get(self, params: dict, run_async=False):</pre></li>
2538
2539 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> if not self.do_async:</pre></li>
2540
2541 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> # Asyncio based (different kind of async)</pre></li>
2542
2543 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> if run_async:</pre></li>
2544
2545 </ol>
2546
2547 <ol start="106" class="context-line">
2548 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> loop = asyncio.get_event_loop()</pre> <span>â¦</span></li>
2549 </ol>
2550
2551 <ol start='107' class="post-context" id="post140096216599872">
2552
2553 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> return loop.run_until_complete(self.get_async(params))</pre></li>
2554
2555 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> return self.get_sync(params)</pre></li>
2556
2557 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> else:</pre></li>
2558
2559 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> logger.info('Added queued async task from {}'.format(params['from']))</pre></li>
2560
2561 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre> self.tasks.append(params)</pre></li>
2562
2563 <li onclick="toggle('pre140096216599872', 'post140096216599872')"><pre></pre></li>
2564
2565 </ol>
2566
2567 </div>
2568
2569
2570
2571 <div class="commands">
2572
2573 <a href="#" onclick="return varToggle(this, '140096216599872')"><span>▶</span> Local vars</a>
2574
2575 </div>
2576 <table class="vars" id="v140096216599872">
2577 <thead>
2578 <tr>
2579 <th>Variable</th>
2580 <th>Value</th>
2581 </tr>
2582 </thead>
2583 <tbody>
2584
2585 <tr>
2586 <td>params</td>
2587 <td class="code"><pre>{'from': 'positions_metrics',
2588 'limit': 1000,
2589 'mode': 'subdomains',
2590 'output': 'json',
2591 'target': 'jakeandjones.com',
2592 'token': '_VdtvfJ_POoce00XymccszGiO-0ltyC4g7ctpF8H'}</pre></td>
2593 </tr>
2594
2595 <tr>
2596 <td>run_async</td>
2597 <td class="code"><pre>True</pre></td>
2598 </tr>
2599
2600 <tr>
2601 <td>self</td>
2602 <td class="code"><pre><vendor.ahrefs.api.APIClient object at 0x7f6ac0037e50></pre></td>
2603 </tr>
2604
2605 </tbody>
2606 </table>
2607
2608 </li>
2609
2610
2611 <li class="frame user">
2612
2613 <code class="fname">/usr/local/lib/python3.8/asyncio/events.py</code>, line 639, in get_event_loop
2614
2615
2616
2617 <div class="context" id="c140096237153024">
2618
2619 <ol start="632" class="pre-context" id="pre140096237153024">
2620
2621 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> """</pre></li>
2622
2623 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> if (self._local._loop is None and</pre></li>
2624
2625 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> not self._local._set_called and</pre></li>
2626
2627 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> isinstance(threading.current_thread(), threading._MainThread)):</pre></li>
2628
2629 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> self.set_event_loop(self.new_event_loop())</pre></li>
2630
2631 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre></pre></li>
2632
2633 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> if self._local._loop is None:</pre></li>
2634
2635 </ol>
2636
2637 <ol start="639" class="context-line">
2638 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> raise RuntimeError('There is no current event loop in thread %r.'</pre> <span>â¦</span></li>
2639 </ol>
2640
2641 <ol start='640' class="post-context" id="post140096237153024">
2642
2643 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> % threading.current_thread().name)</pre></li>
2644
2645 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre></pre></li>
2646
2647 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> return self._local._loop</pre></li>
2648
2649 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre></pre></li>
2650
2651 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> def set_event_loop(self, loop):</pre></li>
2652
2653 <li onclick="toggle('pre140096237153024', 'post140096237153024')"><pre> """Set the event loop."""</pre></li>
2654
2655 </ol>
2656
2657 </div>
2658
2659
2660
2661 <div class="commands">
2662
2663 <a href="#" onclick="return varToggle(this, '140096237153024')"><span>▶</span> Local vars</a>
2664
2665 </div>
2666 <table class="vars" id="v140096237153024">
2667 <thead>
2668 <tr>
2669 <th>Variable</th>
2670 <th>Value</th>
2671 </tr>
2672 </thead>
2673 <tbody>
2674
2675 <tr>
2676 <td>self</td>
2677 <td class="code"><pre><asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7f6ac3919070></pre></td>
2678 </tr>
2679
2680 </tbody>
2681 </table>
2682
2683 </li>
2684
2685 </ul>
2686 </div>
2687 <form action="https://dpaste.com/" name="pasteform" id="pasteform" method="post">
2688
2689 <div id="pastebinTraceback" class="pastebin">
2690 <input type="hidden" name="language" value="PythonConsole">
2691 <input type="hidden" name="title"
2692 value="RuntimeError at /backlink/keyword-difficulty/">
2693 <input type="hidden" name="source" value="Django Dpaste Agent">
2694 <input type="hidden" name="poster" value="Django">
2695 <textarea name="content" id="traceback_area" cols="140" rows="25">
2696Environment:
2697
2698
2699Request Method: GET
2700Request URL: https://backlink.searchatlas.com/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com
2701
2702Django Version: 3.2
2703Python Version: 3.8.9
2704Installed Applications:
2705['django.contrib.admin',
2706 'django.contrib.auth',
2707 'django.contrib.contenttypes',
2708 'django.contrib.sessions',
2709 'django.contrib.messages',
2710 'django.contrib.staticfiles',
2711 'django.contrib.humanize',
2712 'backlink.apps.BacklinkConfig',
2713 'rest_framework',
2714 'rest_framework_api_key',
2715 'django_extensions',
2716 'django_celery_beat',
2717 'django_celery_results',
2718 'django_json_widget',
2719 'django_object_actions',
2720 'drf_yasg',
2721 'sslserver',
2722 'debug_toolbar']
2723Installed Middleware:
2724['debug_toolbar.middleware.DebugToolbarMiddleware',
2725 'django.middleware.security.SecurityMiddleware',
2726 'django.contrib.sessions.middleware.SessionMiddleware',
2727 'corsheaders.middleware.CorsMiddleware',
2728 'django.middleware.common.CommonMiddleware',
2729 'django.middleware.csrf.CsrfViewMiddleware',
2730 'django.contrib.auth.middleware.AuthenticationMiddleware',
2731 'django.contrib.messages.middleware.MessageMiddleware',
2732 'django.middleware.clickjacking.XFrameOptionsMiddleware']
2733
2734
2735
2736Traceback (most recent call last):
2737 File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
2738 response = get_response(request)
2739 File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
2740 response = wrapped_callback(request, *callback_args, **callback_kwargs)
2741 File "/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
2742 return view_func(*args, **kwargs)
2743 File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
2744 return self.dispatch(request, *args, **kwargs)
2745 File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
2746 response = self.handle_exception(exc)
2747 File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
2748 self.raise_uncaught_exception(exc)
2749 File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
2750 raise exc
2751 File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
2752 response = handler(request, *args, **kwargs)
2753 File "/usr/src/app/backlink/api/v1/views.py", line 247, in get
2754 websites = Website.objects.get_or_create_from_urls(urls=website_urls)
2755 File "/usr/src/app/backlink/models.py", line 112, in get_or_create_from_urls
2756 return get_or_create_from_url_results(urls)
2757 File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 222, in __call__
2758 return call_result.result()
2759 File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 437, in result
2760 return self.__get_result()
2761 File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result
2762 raise self._exception
2763 File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 287, in main_wrap
2764 result = await self.awaitable(*args, **kwargs)
2765 File "/usr/src/app/backlink/models.py", line 106, in _gather_async_results_from_get_or_create_from_url
2766 return await asyncio.gather(*task_list)
2767 File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 423, in __call__
2768 ret = await asyncio.wait_for(future, timeout=None)
2769 File "/usr/local/lib/python3.8/asyncio/tasks.py", line 455, in wait_for
2770 return await fut
2771 File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
2772 result = self.fn(*self.args, **self.kwargs)
2773 File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 462, in thread_handler
2774 return func(*args, **kwargs)
2775 File "/usr/src/app/backlink/models.py", line 84, in _get_or_create_from_url_base_method
2776 website.on_created(run_async)
2777 File "/usr/src/app/backlink/models.py", line 287, in on_created
2778 self.pull_website_stats_ahrefs()
2779 File "/usr/src/app/backlink/models.py", line 235, in pull_website_stats_ahrefs
2780 update_website_stats(self)
2781 File "/usr/src/app/vendor/ahrefs/api.py", line 53, in update_website_stats
2782 response = {**api.get_positions_metrics(hostname, run_async=True),
2783 File "/usr/src/app/vendor/ahrefs/api.py", line 273, in get_positions_metrics
2784 response = self.get(params, run_async=run_async)['metrics']
2785 File "/usr/src/app/vendor/ahrefs/api.py", line 106, in get
2786 loop = asyncio.get_event_loop()
2787 File "/usr/local/lib/python3.8/asyncio/events.py", line 639, in get_event_loop
2788 raise RuntimeError('There is no current event loop in thread %r.'
2789
2790Exception Type: RuntimeError at /backlink/keyword-difficulty/
2791Exception Value: There is no current event loop in thread 'ThreadPoolExecutor-0_0'.
2792</textarea>
2793 <br><br>
2794 <input type="submit" value="Share this traceback on a public website">
2795 </div>
2796</form>
2797</div>
2798
2799
2800
2801<div id="requestinfo">
2802 <h2>Request information</h2>
2803
2804
2805
2806 <h3 id="user-info">USER</h3>
2807 <p>17503</p>
2808
2809
2810 <h3 id="get-info">GET</h3>
2811
2812 <table class="req">
2813 <thead>
2814 <tr>
2815 <th>Variable</th>
2816 <th>Value</th>
2817 </tr>
2818 </thead>
2819 <tbody>
2820
2821 <tr>
2822 <td>websites</td>
2823 <td class="code"><pre>'apple.com'</pre></td>
2824 </tr>
2825
2826 </tbody>
2827 </table>
2828
2829
2830 <h3 id="post-info">POST</h3>
2831
2832 <p>No POST data</p>
2833
2834 <h3 id="files-info">FILES</h3>
2835
2836 <p>No FILES data</p>
2837
2838
2839
2840 <h3 id="cookie-info">COOKIES</h3>
2841
2842 <p>No cookie data</p>
2843
2844
2845 <h3 id="meta-info">META</h3>
2846 <table class="req">
2847 <thead>
2848 <tr>
2849 <th>Variable</th>
2850 <th>Value</th>
2851 </tr>
2852 </thead>
2853 <tbody>
2854
2855 <tr>
2856 <td>HTTP_ACCEPT</td>
2857 <td class="code"><pre>'*/*'</pre></td>
2858 </tr>
2859
2860 <tr>
2861 <td>HTTP_ACCEPT_ENCODING</td>
2862 <td class="code"><pre>'gzip'</pre></td>
2863 </tr>
2864
2865 <tr>
2866 <td>HTTP_AUTHORIZATION</td>
2867 <td class="code"><pre>('Bearer '
2868 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoic2xpZGluZyIsImV4cCI6MTYxODgzOTEwOSwianRpIjoiNzAwMWQ2MzcyMDU3NGFiYTk1YjU1MzgzNTk1OTllZWYiLCJyZWZyZXNoX2V4cCI6MTYxODgzOTEwOSwidXNlcl9pZCI6MTc1MDMsImN1c3RvbWVyIjp7ImlkIjo0MzksInRlYW1faWRzIjpbMTc5NTEsMTc1OTksMTc1OTgsMTc1MDMsMTczNzcsMTcwMTUsMTY2MTEsMTY1OTYsMTY0MzAsMTI5MTYsNjE0LDIyOCwxXSwiaXNfc3Vic2NyaWJlciI6ZmFsc2V9fQ.YStnE825oNUaSmUrOz0NSWM-nhAGl6ciAb4Ilu7Wy-A')</pre></td>
2869 </tr>
2870
2871 <tr>
2872 <td>HTTP_CDN_LOOP</td>
2873 <td class="code"><pre>'cloudflare'</pre></td>
2874 </tr>
2875
2876 <tr>
2877 <td>HTTP_CF_CONNECTING_IP</td>
2878 <td class="code"><pre>'24.135.194.235'</pre></td>
2879 </tr>
2880
2881 <tr>
2882 <td>HTTP_CF_IPCOUNTRY</td>
2883 <td class="code"><pre>'RS'</pre></td>
2884 </tr>
2885
2886 <tr>
2887 <td>HTTP_CF_RAY</td>
2888 <td class="code"><pre>'6406e12e68794db8-FRA'</pre></td>
2889 </tr>
2890
2891 <tr>
2892 <td>HTTP_CF_REQUEST_ID</td>
2893 <td class="code"><pre>'09782b10fe00004db8a525e000000001'</pre></td>
2894 </tr>
2895
2896 <tr>
2897 <td>HTTP_CF_VISITOR</td>
2898 <td class="code"><pre>'{"scheme":"https"}'</pre></td>
2899 </tr>
2900
2901 <tr>
2902 <td>HTTP_HOST</td>
2903 <td class="code"><pre>'backlink.searchatlas.com'</pre></td>
2904 </tr>
2905
2906 <tr>
2907 <td>HTTP_USER_AGENT</td>
2908 <td class="code"><pre>'python-requests/2.25.0'</pre></td>
2909 </tr>
2910
2911 <tr>
2912 <td>HTTP_X_FORWARDED_FOR</td>
2913 <td class="code"><pre>'24.135.194.235, 10.24.5.1'</pre></td>
2914 </tr>
2915
2916 <tr>
2917 <td>HTTP_X_FORWARDED_HOST</td>
2918 <td class="code"><pre>'backlink.searchatlas.com'</pre></td>
2919 </tr>
2920
2921 <tr>
2922 <td>HTTP_X_FORWARDED_PORT</td>
2923 <td class="code"><pre>'443'</pre></td>
2924 </tr>
2925
2926 <tr>
2927 <td>HTTP_X_FORWARDED_PROTO</td>
2928 <td class="code"><pre>'https'</pre></td>
2929 </tr>
2930
2931 <tr>
2932 <td>HTTP_X_ORIGINAL_FORWARDED_FOR</td>
2933 <td class="code"><pre>'24.135.194.235'</pre></td>
2934 </tr>
2935
2936 <tr>
2937 <td>HTTP_X_REAL_IP</td>
2938 <td class="code"><pre>'24.135.194.235'</pre></td>
2939 </tr>
2940
2941 <tr>
2942 <td>HTTP_X_REQUEST_ID</td>
2943 <td class="code"><pre>'cc6259e9f2d6506fef2fdee020a6bec3'</pre></td>
2944 </tr>
2945
2946 <tr>
2947 <td>HTTP_X_SCHEME</td>
2948 <td class="code"><pre>'https'</pre></td>
2949 </tr>
2950
2951 <tr>
2952 <td>PATH_INFO</td>
2953 <td class="code"><pre>'/backlink/keyword-difficulty/'</pre></td>
2954 </tr>
2955
2956 <tr>
2957 <td>QUERY_STRING</td>
2958 <td class="code"><pre>'websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'</pre></td>
2959 </tr>
2960
2961 <tr>
2962 <td>RAW_URI</td>
2963 <td class="code"><pre>'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'</pre></td>
2964 </tr>
2965
2966 <tr>
2967 <td>REMOTE_ADDR</td>
2968 <td class="code"><pre>'10.24.5.30'</pre></td>
2969 </tr>
2970
2971 <tr>
2972 <td>REMOTE_PORT</td>
2973 <td class="code"><pre>'57422'</pre></td>
2974 </tr>
2975
2976 <tr>
2977 <td>REQUEST_METHOD</td>
2978 <td class="code"><pre>'GET'</pre></td>
2979 </tr>
2980
2981 <tr>
2982 <td>SCRIPT_NAME</td>
2983 <td class="code"><pre>''</pre></td>
2984 </tr>
2985
2986 <tr>
2987 <td>SERVER_NAME</td>
2988 <td class="code"><pre>'0.0.0.0'</pre></td>
2989 </tr>
2990
2991 <tr>
2992 <td>SERVER_PORT</td>
2993 <td class="code"><pre>'8000'</pre></td>
2994 </tr>
2995
2996 <tr>
2997 <td>SERVER_PROTOCOL</td>
2998 <td class="code"><pre>'HTTP/1.1'</pre></td>
2999 </tr>
3000
3001 <tr>
3002 <td>SERVER_SOFTWARE</td>
3003 <td class="code"><pre>'gunicorn/20.0.4'</pre></td>
3004 </tr>
3005
3006 <tr>
3007 <td>gunicorn.socket</td>
3008 <td class="code"><pre><socket.socket fd=13, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.24.2.212', 8000), raddr=('10.24.5.30', 57422)></pre></td>
3009 </tr>
3010
3011 <tr>
3012 <td>wsgi.errors</td>
3013 <td class="code"><pre><gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f6ac03313a0></pre></td>
3014 </tr>
3015
3016 <tr>
3017 <td>wsgi.file_wrapper</td>
3018 <td class="code"><pre><class 'gunicorn.http.wsgi.FileWrapper'></pre></td>
3019 </tr>
3020
3021 <tr>
3022 <td>wsgi.input</td>
3023 <td class="code"><pre><gunicorn.http.body.Body object at 0x7f6ac0331dc0></pre></td>
3024 </tr>
3025
3026 <tr>
3027 <td>wsgi.input_terminated</td>
3028 <td class="code"><pre>True</pre></td>
3029 </tr>
3030
3031 <tr>
3032 <td>wsgi.multiprocess</td>
3033 <td class="code"><pre>True</pre></td>
3034 </tr>
3035
3036 <tr>
3037 <td>wsgi.multithread</td>
3038 <td class="code"><pre>False</pre></td>
3039 </tr>
3040
3041 <tr>
3042 <td>wsgi.run_once</td>
3043 <td class="code"><pre>False</pre></td>
3044 </tr>
3045
3046 <tr>
3047 <td>wsgi.url_scheme</td>
3048 <td class="code"><pre>'http'</pre></td>
3049 </tr>
3050
3051 <tr>
3052 <td>wsgi.version</td>
3053 <td class="code"><pre>(1, 0)</pre></td>
3054 </tr>
3055
3056 </tbody>
3057 </table>
3058
3059
3060 <h3 id="settings-info">Settings</h3>
3061 <h4>Using settings module <code>app.settings</code></h4>
3062 <table class="req">
3063 <thead>
3064 <tr>
3065 <th>Setting</th>
3066 <th>Value</th>
3067 </tr>
3068 </thead>
3069 <tbody>
3070
3071 <tr>
3072 <td>ABSOLUTE_URL_OVERRIDES</td>
3073 <td class="code"><pre>{}</pre></td>
3074 </tr>
3075
3076 <tr>
3077 <td>ADMINS</td>
3078 <td class="code"><pre>[]</pre></td>
3079 </tr>
3080
3081 <tr>
3082 <td>ALLOWED_HOSTS</td>
3083 <td class="code"><pre>['backlink.searchatlas.com',
3084 'backlinkapp-backlinkapp-production.backlinkapp-production.svc.cluster.local',
3085 'backlink-staging.searchatlas.com',
3086 'backlink.linkgraph.io']</pre></td>
3087 </tr>
3088
3089 <tr>
3090 <td>APPEND_SLASH</td>
3091 <td class="code"><pre>True</pre></td>
3092 </tr>
3093
3094 <tr>
3095 <td>AUTHENTICATION_BACKENDS</td>
3096 <td class="code"><pre>['django.contrib.auth.backends.ModelBackend']</pre></td>
3097 </tr>
3098
3099 <tr>
3100 <td>AUTH_PASSWORD_VALIDATORS</td>
3101 <td class="code"><pre>'********************'</pre></td>
3102 </tr>
3103
3104 <tr>
3105 <td>AUTH_USER_MODEL</td>
3106 <td class="code"><pre>'backlink.user'</pre></td>
3107 </tr>
3108
3109 <tr>
3110 <td>BACKLINK_ENVIRONMENT</td>
3111 <td class="code"><pre>'production'</pre></td>
3112 </tr>
3113
3114 <tr>
3115 <td>BACKLINK_WAREHOUSE_URL</td>
3116 <td class="code"><pre>'clickhouse://backlink:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="acceca95c9cd9c94cf949f9a9b9ac9ca9ccecf9b9b9899c89d9d9994cfcd9898cdeccfc0c5cfc7c4c3d9dfc981cecdcfc7c0c5c2c782cfc0c5cfc7c4c3d9dfc9">[email protected]</a>/backlink_data'</pre></td>
3117 </tr>
3118
3119 <tr>
3120 <td>BASE_DIR</td>
3121 <td class="code"><pre>'/usr/src/app'</pre></td>
3122 </tr>
3123
3124 <tr>
3125 <td>CACHES</td>
3126 <td class="code"><pre>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</pre></td>
3127 </tr>
3128
3129 <tr>
3130 <td>CACHE_MIDDLEWARE_ALIAS</td>
3131 <td class="code"><pre>'default'</pre></td>
3132 </tr>
3133
3134 <tr>
3135 <td>CACHE_MIDDLEWARE_KEY_PREFIX</td>
3136 <td class="code"><pre>'********************'</pre></td>
3137 </tr>
3138
3139 <tr>
3140 <td>CACHE_MIDDLEWARE_SECONDS</td>
3141 <td class="code"><pre>600</pre></td>
3142 </tr>
3143
3144 <tr>
3145 <td>CELERY_ACCEPT_CONTENT</td>
3146 <td class="code"><pre>['application/json']</pre></td>
3147 </tr>
3148
3149 <tr>
3150 <td>CELERY_ALWAYS_EAGER</td>
3151 <td class="code"><pre>False</pre></td>
3152 </tr>
3153
3154 <tr>
3155 <td>CELERY_BEAT_SCHEDULE</td>
3156 <td class="code"><pre>{'periodically-get-subscription-info': {'schedule': <crontab: 0 15 * * * (m/h/d/dM/MY)>,
3157 'task': 'backlink.tasks.periodically_get_subscription_info'},
3158 'periodically-populate-backlink-toxicity-data': {'schedule': <crontab: 0 * * * * (m/h/d/dM/MY)>,
3159 'task': 'backlink.tasks.periodically_populate_backlink_toxicity_data'}}</pre></td>
3160 </tr>
3161
3162 <tr>
3163 <td>CELERY_BROKER_URL</td>
3164 <td class="code"><pre>'redis://redis-backlinkapp-production-master:6379'</pre></td>
3165 </tr>
3166
3167 <tr>
3168 <td>CELERY_RESULT_BACKEND</td>
3169 <td class="code"><pre>'django-db'</pre></td>
3170 </tr>
3171
3172 <tr>
3173 <td>CELERY_RESULT_SERIALIZER</td>
3174 <td class="code"><pre>'json'</pre></td>
3175 </tr>
3176
3177 <tr>
3178 <td>CELERY_TASK_SERIALIZER</td>
3179 <td class="code"><pre>'json'</pre></td>
3180 </tr>
3181
3182 <tr>
3183 <td>CELERY_TIMEZONE</td>
3184 <td class="code"><pre>'UTC'</pre></td>
3185 </tr>
3186
3187 <tr>
3188 <td>CH_CLUSTER_NAME</td>
3189 <td class="code"><pre>'cluster'</pre></td>
3190 </tr>
3191
3192 <tr>
3193 <td>CLICKHOUSE_WAREHOUSE_SETTINGS</td>
3194 <td class="code"><pre>{'cluster_name': 'cluster',
3195 'is_cluster': True,
3196 'url': 'clickhouse://backlink:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="aeccc897cbcf9e96cd969d989998cbc89ecccd99999a9bca9f9f9b96cdcf9a9acfeecdc2c7cdc5c6c1dbddcb83cccfcdc5c2c7c0c580cdc2c7cdc5c6c1dbddcb">[email protected]</a>/backlink_data'}</pre></td>
3197 </tr>
3198
3199 <tr>
3200 <td>CORE_APPS</td>
3201 <td class="code"><pre>['backlink.apps.BacklinkConfig']</pre></td>
3202 </tr>
3203
3204 <tr>
3205 <td>CORS_ALLOW_CREDENTIALS</td>
3206 <td class="code"><pre>True</pre></td>
3207 </tr>
3208
3209 <tr>
3210 <td>CORS_ORIGIN_WHITELIST</td>
3211 <td class="code"><pre>['https://dashboard.linkgraph.io', 'http://localhost:3000']</pre></td>
3212 </tr>
3213
3214 <tr>
3215 <td>CSRF_COOKIE_AGE</td>
3216 <td class="code"><pre>31449600</pre></td>
3217 </tr>
3218
3219 <tr>
3220 <td>CSRF_COOKIE_DOMAIN</td>
3221 <td class="code"><pre>None</pre></td>
3222 </tr>
3223
3224 <tr>
3225 <td>CSRF_COOKIE_HTTPONLY</td>
3226 <td class="code"><pre>False</pre></td>
3227 </tr>
3228
3229 <tr>
3230 <td>CSRF_COOKIE_NAME</td>
3231 <td class="code"><pre>'csrftoken'</pre></td>
3232 </tr>
3233
3234 <tr>
3235 <td>CSRF_COOKIE_PATH</td>
3236 <td class="code"><pre>'/'</pre></td>
3237 </tr>
3238
3239 <tr>
3240 <td>CSRF_COOKIE_SAMESITE</td>
3241 <td class="code"><pre>'Lax'</pre></td>
3242 </tr>
3243
3244 <tr>
3245 <td>CSRF_COOKIE_SECURE</td>
3246 <td class="code"><pre>False</pre></td>
3247 </tr>
3248
3249 <tr>
3250 <td>CSRF_FAILURE_VIEW</td>
3251 <td class="code"><pre>'django.views.csrf.csrf_failure'</pre></td>
3252 </tr>
3253
3254 <tr>
3255 <td>CSRF_HEADER_NAME</td>
3256 <td class="code"><pre>'HTTP_X_CSRFTOKEN'</pre></td>
3257 </tr>
3258
3259 <tr>
3260 <td>CSRF_TRUSTED_ORIGINS</td>
3261 <td class="code"><pre>[]</pre></td>
3262 </tr>
3263
3264 <tr>
3265 <td>CSRF_USE_SESSIONS</td>
3266 <td class="code"><pre>False</pre></td>
3267 </tr>
3268
3269 <tr>
3270 <td>DATABASES</td>
3271 <td class="code"><pre>{'default': {'ATOMIC_REQUESTS': False,
3272 'AUTOCOMMIT': True,
3273 'CONN_MAX_AGE': 0,
3274 'ENGINE': 'django.db.backends.postgresql',
3275 'HOST': 'domainprospector-prod-db.cloudsql-proxy',
3276 'NAME': 'backlinkapp_db',
3277 'OPTIONS': {},
3278 'PASSWORD': '********************',
3279 'PORT': '5432',
3280 'TEST': {'CHARSET': None,
3281 'COLLATION': None,
3282 'MIGRATE': True,
3283 'MIRROR': None,
3284 'NAME': None},
3285 'TIME_ZONE': None,
3286 'USER': 'backlinkapp'}}</pre></td>
3287 </tr>
3288
3289 <tr>
3290 <td>DATABASE_ROUTERS</td>
3291 <td class="code"><pre>[]</pre></td>
3292 </tr>
3293
3294 <tr>
3295 <td>DATA_UPLOAD_MAX_MEMORY_SIZE</td>
3296 <td class="code"><pre>2621440</pre></td>
3297 </tr>
3298
3299 <tr>
3300 <td>DATA_UPLOAD_MAX_NUMBER_FIELDS</td>
3301 <td class="code"><pre>1000</pre></td>
3302 </tr>
3303
3304 <tr>
3305 <td>DATETIME_FORMAT</td>
3306 <td class="code"><pre>'N j, Y, P'</pre></td>
3307 </tr>
3308
3309 <tr>
3310 <td>DATETIME_INPUT_FORMATS</td>
3311 <td class="code"><pre>['%Y-%m-%d %H:%M:%S',
3312 '%Y-%m-%d %H:%M:%S.%f',
3313 '%Y-%m-%d %H:%M',
3314 '%m/%d/%Y %H:%M:%S',
3315 '%m/%d/%Y %H:%M:%S.%f',
3316 '%m/%d/%Y %H:%M',
3317 '%m/%d/%y %H:%M:%S',
3318 '%m/%d/%y %H:%M:%S.%f',
3319 '%m/%d/%y %H:%M']</pre></td>
3320 </tr>
3321
3322 <tr>
3323 <td>DATE_FORMAT</td>
3324 <td class="code"><pre>'N j, Y'</pre></td>
3325 </tr>
3326
3327 <tr>
3328 <td>DATE_INPUT_FORMATS</td>
3329 <td class="code"><pre>['%Y-%m-%d',
3330 '%m/%d/%Y',
3331 '%m/%d/%y',
3332 '%b %d %Y',
3333 '%b %d, %Y',
3334 '%d %b %Y',
3335 '%d %b, %Y',
3336 '%B %d %Y',
3337 '%B %d, %Y',
3338 '%d %B %Y',
3339 '%d %B, %Y']</pre></td>
3340 </tr>
3341
3342 <tr>
3343 <td>DB_ENGINE</td>
3344 <td class="code"><pre>'django.db.backends.postgresql'</pre></td>
3345 </tr>
3346
3347 <tr>
3348 <td>DB_HOST</td>
3349 <td class="code"><pre>'domainprospector-prod-db.cloudsql-proxy'</pre></td>
3350 </tr>
3351
3352 <tr>
3353 <td>DB_NAME</td>
3354 <td class="code"><pre>'backlinkapp_db'</pre></td>
3355 </tr>
3356
3357 <tr>
3358 <td>DB_PORT</td>
3359 <td class="code"><pre>'5432'</pre></td>
3360 </tr>
3361
3362 <tr>
3363 <td>DB_PW</td>
3364 <td class="code"><pre>'61gh25edt6'</pre></td>
3365 </tr>
3366
3367 <tr>
3368 <td>DB_USER</td>
3369 <td class="code"><pre>'backlinkapp'</pre></td>
3370 </tr>
3371
3372 <tr>
3373 <td>DEBUG</td>
3374 <td class="code"><pre>1</pre></td>
3375 </tr>
3376
3377 <tr>
3378 <td>DEBUG_PROPAGATE_EXCEPTIONS</td>
3379 <td class="code"><pre>False</pre></td>
3380 </tr>
3381
3382 <tr>
3383 <td>DEBUG_TOOLBAR_CONFIG</td>
3384 <td class="code"><pre>{'SHOW_TOOLBAR_CALLBACK': <function <lambda> at 0x7f6adb2afd30>}</pre></td>
3385 </tr>
3386
3387 <tr>
3388 <td>DECIMAL_SEPARATOR</td>
3389 <td class="code"><pre>'.'</pre></td>
3390 </tr>
3391
3392 <tr>
3393 <td>DEFAULT_AUTO_FIELD</td>
3394 <td class="code"><pre>'django.db.models.AutoField'</pre></td>
3395 </tr>
3396
3397 <tr>
3398 <td>DEFAULT_CHARSET</td>
3399 <td class="code"><pre>'utf-8'</pre></td>
3400 </tr>
3401
3402 <tr>
3403 <td>DEFAULT_EXCEPTION_REPORTER</td>
3404 <td class="code"><pre>'django.views.debug.ExceptionReporter'</pre></td>
3405 </tr>
3406
3407 <tr>
3408 <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
3409 <td class="code"><pre>'django.views.debug.SafeExceptionReporterFilter'</pre></td>
3410 </tr>
3411
3412 <tr>
3413 <td>DEFAULT_FILE_STORAGE</td>
3414 <td class="code"><pre>'storages.backends.gcloud.GoogleCloudStorage'</pre></td>
3415 </tr>
3416
3417 <tr>
3418 <td>DEFAULT_FROM_EMAIL</td>
3419 <td class="code"><pre>'<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bccbd9ded1ddcfc8d9cefcd0d3dfddd0d4d3cfc8">[email protected]</a>'</pre></td>
3420 </tr>
3421
3422 <tr>
3423 <td>DEFAULT_HASHING_ALGORITHM</td>
3424 <td class="code"><pre>'sha256'</pre></td>
3425 </tr>
3426
3427 <tr>
3428 <td>DEFAULT_INDEX_TABLESPACE</td>
3429 <td class="code"><pre>''</pre></td>
3430 </tr>
3431
3432 <tr>
3433 <td>DEFAULT_TABLESPACE</td>
3434 <td class="code"><pre>''</pre></td>
3435 </tr>
3436
3437 <tr>
3438 <td>DISALLOWED_USER_AGENTS</td>
3439 <td class="code"><pre>[]</pre></td>
3440 </tr>
3441
3442 <tr>
3443 <td>DJANGO_APPS</td>
3444 <td class="code"><pre>['django.contrib.admin',
3445 'django.contrib.auth',
3446 'django.contrib.contenttypes',
3447 'django.contrib.sessions',
3448 'django.contrib.messages',
3449 'django.contrib.staticfiles',
3450 'django.contrib.humanize']</pre></td>
3451 </tr>
3452
3453 <tr>
3454 <td>EMAIL_BACKEND</td>
3455 <td class="code"><pre>'django.core.mail.backends.smtp.EmailBackend'</pre></td>
3456 </tr>
3457
3458 <tr>
3459 <td>EMAIL_HOST</td>
3460 <td class="code"><pre>'localhost'</pre></td>
3461 </tr>
3462
3463 <tr>
3464 <td>EMAIL_HOST_PASSWORD</td>
3465 <td class="code"><pre>'********************'</pre></td>
3466 </tr>
3467
3468 <tr>
3469 <td>EMAIL_HOST_USER</td>
3470 <td class="code"><pre>''</pre></td>
3471 </tr>
3472
3473 <tr>
3474 <td>EMAIL_PORT</td>
3475 <td class="code"><pre>25</pre></td>
3476 </tr>
3477
3478 <tr>
3479 <td>EMAIL_SSL_CERTFILE</td>
3480 <td class="code"><pre>None</pre></td>
3481 </tr>
3482
3483 <tr>
3484 <td>EMAIL_SSL_KEYFILE</td>
3485 <td class="code"><pre>'********************'</pre></td>
3486 </tr>
3487
3488 <tr>
3489 <td>EMAIL_SUBJECT_PREFIX</td>
3490 <td class="code"><pre>'[Django] '</pre></td>
3491 </tr>
3492
3493 <tr>
3494 <td>EMAIL_TIMEOUT</td>
3495 <td class="code"><pre>None</pre></td>
3496 </tr>
3497
3498 <tr>
3499 <td>EMAIL_USE_LOCALTIME</td>
3500 <td class="code"><pre>False</pre></td>
3501 </tr>
3502
3503 <tr>
3504 <td>EMAIL_USE_SSL</td>
3505 <td class="code"><pre>False</pre></td>
3506 </tr>
3507
3508 <tr>
3509 <td>EMAIL_USE_TLS</td>
3510 <td class="code"><pre>False</pre></td>
3511 </tr>
3512
3513 <tr>
3514 <td>ENABLE_CELERY_PERIODIC_TASKS</td>
3515 <td class="code"><pre>1</pre></td>
3516 </tr>
3517
3518 <tr>
3519 <td>ENV</td>
3520 <td class="code"><pre>'PROD_'</pre></td>
3521 </tr>
3522
3523 <tr>
3524 <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
3525 <td class="code"><pre>None</pre></td>
3526 </tr>
3527
3528 <tr>
3529 <td>FILE_UPLOAD_HANDLERS</td>
3530 <td class="code"><pre>['django.core.files.uploadhandler.MemoryFileUploadHandler',
3531 'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td>
3532 </tr>
3533
3534 <tr>
3535 <td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
3536 <td class="code"><pre>2621440</pre></td>
3537 </tr>
3538
3539 <tr>
3540 <td>FILE_UPLOAD_PERMISSIONS</td>
3541 <td class="code"><pre>420</pre></td>
3542 </tr>
3543
3544 <tr>
3545 <td>FILE_UPLOAD_TEMP_DIR</td>
3546 <td class="code"><pre>None</pre></td>
3547 </tr>
3548
3549 <tr>
3550 <td>FIRST_DAY_OF_WEEK</td>
3551 <td class="code"><pre>0</pre></td>
3552 </tr>
3553
3554 <tr>
3555 <td>FIXTURE_DIRS</td>
3556 <td class="code"><pre>[]</pre></td>
3557 </tr>
3558
3559 <tr>
3560 <td>FORCE_SCRIPT_NAME</td>
3561 <td class="code"><pre>None</pre></td>
3562 </tr>
3563
3564 <tr>
3565 <td>FORMAT_MODULE_PATH</td>
3566 <td class="code"><pre>None</pre></td>
3567 </tr>
3568
3569 <tr>
3570 <td>FORM_RENDERER</td>
3571 <td class="code"><pre>'django.forms.renderers.DjangoTemplates'</pre></td>
3572 </tr>
3573
3574 <tr>
3575 <td>GS_BUCKET_NAME</td>
3576 <td class="code"><pre>'backlink-tool-screenshots'</pre></td>
3577 </tr>
3578
3579 <tr>
3580 <td>GS_CREDENTIALS</td>
3581 <td class="code"><pre><google.oauth2.service_account.Credentials object at 0x7f6adb27d7f0></pre></td>
3582 </tr>
3583
3584 <tr>
3585 <td>HOST</td>
3586 <td class="code"><pre>'backlink.searchatlas.com'</pre></td>
3587 </tr>
3588
3589 <tr>
3590 <td>IGNORABLE_404_URLS</td>
3591 <td class="code"><pre>[]</pre></td>
3592 </tr>
3593
3594 <tr>
3595 <td>INSTALLED_APPS</td>
3596 <td class="code"><pre>['django.contrib.admin',
3597 'django.contrib.auth',
3598 'django.contrib.contenttypes',
3599 'django.contrib.sessions',
3600 'django.contrib.messages',
3601 'django.contrib.staticfiles',
3602 'django.contrib.humanize',
3603 'backlink.apps.BacklinkConfig',
3604 'rest_framework',
3605 'rest_framework_api_key',
3606 'django_extensions',
3607 'django_celery_beat',
3608 'django_celery_results',
3609 'django_json_widget',
3610 'django_object_actions',
3611 'drf_yasg',
3612 'sslserver',
3613 'debug_toolbar']</pre></td>
3614 </tr>
3615
3616 <tr>
3617 <td>INTERNAL_IPS</td>
3618 <td class="code"><pre>['127.0.0.1']</pre></td>
3619 </tr>
3620
3621 <tr>
3622 <td>LANGUAGES</td>
3623 <td class="code"><pre>[('af', 'Afrikaans'),
3624 ('ar', 'Arabic'),
3625 ('ar-dz', 'Algerian Arabic'),
3626 ('ast', 'Asturian'),
3627 ('az', 'Azerbaijani'),
3628 ('bg', 'Bulgarian'),
3629 ('be', 'Belarusian'),
3630 ('bn', 'Bengali'),
3631 ('br', 'Breton'),
3632 ('bs', 'Bosnian'),
3633 ('ca', 'Catalan'),
3634 ('cs', 'Czech'),
3635 ('cy', 'Welsh'),
3636 ('da', 'Danish'),
3637 ('de', 'German'),
3638 ('dsb', 'Lower Sorbian'),
3639 ('el', 'Greek'),
3640 ('en', 'English'),
3641 ('en-au', 'Australian English'),
3642 ('en-gb', 'British English'),
3643 ('eo', 'Esperanto'),
3644 ('es', 'Spanish'),
3645 ('es-ar', 'Argentinian Spanish'),
3646 ('es-co', 'Colombian Spanish'),
3647 ('es-mx', 'Mexican Spanish'),
3648 ('es-ni', 'Nicaraguan Spanish'),
3649 ('es-ve', 'Venezuelan Spanish'),
3650 ('et', 'Estonian'),
3651 ('eu', 'Basque'),
3652 ('fa', 'Persian'),
3653 ('fi', 'Finnish'),
3654 ('fr', 'French'),
3655 ('fy', 'Frisian'),
3656 ('ga', 'Irish'),
3657 ('gd', 'Scottish Gaelic'),
3658 ('gl', 'Galician'),
3659 ('he', 'Hebrew'),
3660 ('hi', 'Hindi'),
3661 ('hr', 'Croatian'),
3662 ('hsb', 'Upper Sorbian'),
3663 ('hu', 'Hungarian'),
3664 ('hy', 'Armenian'),
3665 ('ia', 'Interlingua'),
3666 ('id', 'Indonesian'),
3667 ('ig', 'Igbo'),
3668 ('io', 'Ido'),
3669 ('is', 'Icelandic'),
3670 ('it', 'Italian'),
3671 ('ja', 'Japanese'),
3672 ('ka', 'Georgian'),
3673 ('kab', 'Kabyle'),
3674 ('kk', 'Kazakh'),
3675 ('km', 'Khmer'),
3676 ('kn', 'Kannada'),
3677 ('ko', 'Korean'),
3678 ('ky', 'Kyrgyz'),
3679 ('lb', 'Luxembourgish'),
3680 ('lt', 'Lithuanian'),
3681 ('lv', 'Latvian'),
3682 ('mk', 'Macedonian'),
3683 ('ml', 'Malayalam'),
3684 ('mn', 'Mongolian'),
3685 ('mr', 'Marathi'),
3686 ('my', 'Burmese'),
3687 ('nb', 'Norwegian Bokmål'),
3688 ('ne', 'Nepali'),
3689 ('nl', 'Dutch'),
3690 ('nn', 'Norwegian Nynorsk'),
3691 ('os', 'Ossetic'),
3692 ('pa', 'Punjabi'),
3693 ('pl', 'Polish'),
3694 ('pt', 'Portuguese'),
3695 ('pt-br', 'Brazilian Portuguese'),
3696 ('ro', 'Romanian'),
3697 ('ru', 'Russian'),
3698 ('sk', 'Slovak'),
3699 ('sl', 'Slovenian'),
3700 ('sq', 'Albanian'),
3701 ('sr', 'Serbian'),
3702 ('sr-latn', 'Serbian Latin'),
3703 ('sv', 'Swedish'),
3704 ('sw', 'Swahili'),
3705 ('ta', 'Tamil'),
3706 ('te', 'Telugu'),
3707 ('tg', 'Tajik'),
3708 ('th', 'Thai'),
3709 ('tk', 'Turkmen'),
3710 ('tr', 'Turkish'),
3711 ('tt', 'Tatar'),
3712 ('udm', 'Udmurt'),
3713 ('uk', 'Ukrainian'),
3714 ('ur', 'Urdu'),
3715 ('uz', 'Uzbek'),
3716 ('vi', 'Vietnamese'),
3717 ('zh-hans', 'Simplified Chinese'),
3718 ('zh-hant', 'Traditional Chinese')]</pre></td>
3719 </tr>
3720
3721 <tr>
3722 <td>LANGUAGES_BIDI</td>
3723 <td class="code"><pre>['he', 'ar', 'ar-dz', 'fa', 'ur']</pre></td>
3724 </tr>
3725
3726 <tr>
3727 <td>LANGUAGE_CODE</td>
3728 <td class="code"><pre>'en-us'</pre></td>
3729 </tr>
3730
3731 <tr>
3732 <td>LANGUAGE_COOKIE_AGE</td>
3733 <td class="code"><pre>None</pre></td>
3734 </tr>
3735
3736 <tr>
3737 <td>LANGUAGE_COOKIE_DOMAIN</td>
3738 <td class="code"><pre>None</pre></td>
3739 </tr>
3740
3741 <tr>
3742 <td>LANGUAGE_COOKIE_HTTPONLY</td>
3743 <td class="code"><pre>False</pre></td>
3744 </tr>
3745
3746 <tr>
3747 <td>LANGUAGE_COOKIE_NAME</td>
3748 <td class="code"><pre>'django_language'</pre></td>
3749 </tr>
3750
3751 <tr>
3752 <td>LANGUAGE_COOKIE_PATH</td>
3753 <td class="code"><pre>'/'</pre></td>
3754 </tr>
3755
3756 <tr>
3757 <td>LANGUAGE_COOKIE_SAMESITE</td>
3758 <td class="code"><pre>None</pre></td>
3759 </tr>
3760
3761 <tr>
3762 <td>LANGUAGE_COOKIE_SECURE</td>
3763 <td class="code"><pre>False</pre></td>
3764 </tr>
3765
3766 <tr>
3767 <td>LINKGRAPHIO_EMAIL_CONNECTION</td>
3768 <td class="code"><pre>{'host': 'email-smtp.us-east-1.amazonaws.com',
3769 'password': '********************',
3770 'port': 587,
3771 'sender': '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="91f3f0f2fafdf8fffad1fdf8fffaf6e3f0e1f9bff8fe">[email protected]</a>',
3772 'use_tls': True,
3773 'username': ''}</pre></td>
3774 </tr>
3775
3776 <tr>
3777 <td>LOCALE_PATHS</td>
3778 <td class="code"><pre>[]</pre></td>
3779 </tr>
3780
3781 <tr>
3782 <td>LOGGING</td>
3783 <td class="code"><pre>{'disable_existing_loggers': False,
3784 'formatters': {'timestamp': {'format': '{asctime} {levelname} {module} '
3785 '{message}',
3786 'style': '{'}},
3787 'handlers': {'console': {'class': 'logging.StreamHandler',
3788 'formatter': 'timestamp'}},
3789 'root': {'handlers': ['console'], 'level': 'DEBUG'},
3790 'version': 1}</pre></td>
3791 </tr>
3792
3793 <tr>
3794 <td>LOGGING_CONFIG</td>
3795 <td class="code"><pre>'logging.config.dictConfig'</pre></td>
3796 </tr>
3797
3798 <tr>
3799 <td>LOGIN_REDIRECT_URL</td>
3800 <td class="code"><pre>'/accounts/profile/'</pre></td>
3801 </tr>
3802
3803 <tr>
3804 <td>LOGIN_URL</td>
3805 <td class="code"><pre>'/accounts/login/'</pre></td>
3806 </tr>
3807
3808 <tr>
3809 <td>LOGOUT_REDIRECT_URL</td>
3810 <td class="code"><pre>None</pre></td>
3811 </tr>
3812
3813 <tr>
3814 <td>MAIL_NOTIFICATIONS_ENABLED</td>
3815 <td class="code"><pre>False</pre></td>
3816 </tr>
3817
3818 <tr>
3819 <td>MANAGERS</td>
3820 <td class="code"><pre>[]</pre></td>
3821 </tr>
3822
3823 <tr>
3824 <td>MEDIA_ROOT</td>
3825 <td class="code"><pre>'/usr/src/app/media'</pre></td>
3826 </tr>
3827
3828 <tr>
3829 <td>MEDIA_URL</td>
3830 <td class="code"><pre>'/media/'</pre></td>
3831 </tr>
3832
3833 <tr>
3834 <td>MESSAGE_STORAGE</td>
3835 <td class="code"><pre>'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>
3836 </tr>
3837
3838 <tr>
3839 <td>MIDDLEWARE</td>
3840 <td class="code"><pre>['debug_toolbar.middleware.DebugToolbarMiddleware',
3841 'django.middleware.security.SecurityMiddleware',
3842 'django.contrib.sessions.middleware.SessionMiddleware',
3843 'corsheaders.middleware.CorsMiddleware',
3844 'django.middleware.common.CommonMiddleware',
3845 'django.middleware.csrf.CsrfViewMiddleware',
3846 'django.contrib.auth.middleware.AuthenticationMiddleware',
3847 'django.contrib.messages.middleware.MessageMiddleware',
3848 'django.middleware.clickjacking.XFrameOptionsMiddleware']</pre></td>
3849 </tr>
3850
3851 <tr>
3852 <td>MIGRATION_MODULES</td>
3853 <td class="code"><pre>{}</pre></td>
3854 </tr>
3855
3856 <tr>
3857 <td>MONTH_DAY_FORMAT</td>
3858 <td class="code"><pre>'F j'</pre></td>
3859 </tr>
3860
3861 <tr>
3862 <td>NUMBER_GROUPING</td>
3863 <td class="code"><pre>0</pre></td>
3864 </tr>
3865
3866 <tr>
3867 <td>PASSWORD_HASHERS</td>
3868 <td class="code"><pre>'********************'</pre></td>
3869 </tr>
3870
3871 <tr>
3872 <td>PASSWORD_RESET_TIMEOUT</td>
3873 <td class="code"><pre>'********************'</pre></td>
3874 </tr>
3875
3876 <tr>
3877 <td>PASSWORD_RESET_TIMEOUT_DAYS</td>
3878 <td class="code"><pre>'********************'</pre></td>
3879 </tr>
3880
3881 <tr>
3882 <td>PREPEND_WWW</td>
3883 <td class="code"><pre>False</pre></td>
3884 </tr>
3885
3886 <tr>
3887 <td>REST_FRAMEWORK</td>
3888 <td class="code"><pre>{'DEFAULT_AUTHENTICATION_CLASSES': (),
3889 'DEFAULT_PERMISSION_CLASSES': (),
3890 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
3891 'STRICT_JSON': False}</pre></td>
3892 </tr>
3893
3894 <tr>
3895 <td>ROOT_URLCONF</td>
3896 <td class="code"><pre>'app.urls'</pre></td>
3897 </tr>
3898
3899 <tr>
3900 <td>SECRET_KEY</td>
3901 <td class="code"><pre>'********************'</pre></td>
3902 </tr>
3903
3904 <tr>
3905 <td>SECURE_BROWSER_XSS_FILTER</td>
3906 <td class="code"><pre>False</pre></td>
3907 </tr>
3908
3909 <tr>
3910 <td>SECURE_CONTENT_TYPE_NOSNIFF</td>
3911 <td class="code"><pre>True</pre></td>
3912 </tr>
3913
3914 <tr>
3915 <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
3916 <td class="code"><pre>False</pre></td>
3917 </tr>
3918
3919 <tr>
3920 <td>SECURE_HSTS_PRELOAD</td>
3921 <td class="code"><pre>False</pre></td>
3922 </tr>
3923
3924 <tr>
3925 <td>SECURE_HSTS_SECONDS</td>
3926 <td class="code"><pre>0</pre></td>
3927 </tr>
3928
3929 <tr>
3930 <td>SECURE_PROXY_SSL_HEADER</td>
3931 <td class="code"><pre>('HTTP_X_FORWARDED_PROTO', 'https')</pre></td>
3932 </tr>
3933
3934 <tr>
3935 <td>SECURE_REDIRECT_EXEMPT</td>
3936 <td class="code"><pre>[]</pre></td>
3937 </tr>
3938
3939 <tr>
3940 <td>SECURE_REFERRER_POLICY</td>
3941 <td class="code"><pre>'same-origin'</pre></td>
3942 </tr>
3943
3944 <tr>
3945 <td>SECURE_SSL_HOST</td>
3946 <td class="code"><pre>None</pre></td>
3947 </tr>
3948
3949 <tr>
3950 <td>SECURE_SSL_REDIRECT</td>
3951 <td class="code"><pre>False</pre></td>
3952 </tr>
3953
3954 <tr>
3955 <td>SERVER_EMAIL</td>
3956 <td class="code"><pre>'<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="99ebf6f6edd9f5f6faf8f5f1f6eaed">[email protected]</a>'</pre></td>
3957 </tr>
3958
3959 <tr>
3960 <td>SESSION_CACHE_ALIAS</td>
3961 <td class="code"><pre>'default'</pre></td>
3962 </tr>
3963
3964 <tr>
3965 <td>SESSION_COOKIE_AGE</td>
3966 <td class="code"><pre>1209600</pre></td>
3967 </tr>
3968
3969 <tr>
3970 <td>SESSION_COOKIE_DOMAIN</td>
3971 <td class="code"><pre>None</pre></td>
3972 </tr>
3973
3974 <tr>
3975 <td>SESSION_COOKIE_HTTPONLY</td>
3976 <td class="code"><pre>True</pre></td>
3977 </tr>
3978
3979 <tr>
3980 <td>SESSION_COOKIE_NAME</td>
3981 <td class="code"><pre>'sessionid'</pre></td>
3982 </tr>
3983
3984 <tr>
3985 <td>SESSION_COOKIE_PATH</td>
3986 <td class="code"><pre>'/'</pre></td>
3987 </tr>
3988
3989 <tr>
3990 <td>SESSION_COOKIE_SAMESITE</td>
3991 <td class="code"><pre>None</pre></td>
3992 </tr>
3993
3994 <tr>
3995 <td>SESSION_COOKIE_SECURE</td>
3996 <td class="code"><pre>False</pre></td>
3997 </tr>
3998
3999 <tr>
4000 <td>SESSION_ENGINE</td>
4001 <td class="code"><pre>'django.contrib.sessions.backends.db'</pre></td>
4002 </tr>
4003
4004 <tr>
4005 <td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>
4006 <td class="code"><pre>False</pre></td>
4007 </tr>
4008
4009 <tr>
4010 <td>SESSION_FILE_PATH</td>
4011 <td class="code"><pre>None</pre></td>
4012 </tr>
4013
4014 <tr>
4015 <td>SESSION_SAVE_EVERY_REQUEST</td>
4016 <td class="code"><pre>False</pre></td>
4017 </tr>
4018
4019 <tr>
4020 <td>SESSION_SERIALIZER</td>
4021 <td class="code"><pre>'django.contrib.sessions.serializers.JSONSerializer'</pre></td>
4022 </tr>
4023
4024 <tr>
4025 <td>SETTINGS_MODULE</td>
4026 <td class="code"><pre>'app.settings'</pre></td>
4027 </tr>
4028
4029 <tr>
4030 <td>SHORT_DATETIME_FORMAT</td>
4031 <td class="code"><pre>'m/d/Y P'</pre></td>
4032 </tr>
4033
4034 <tr>
4035 <td>SHORT_DATE_FORMAT</td>
4036 <td class="code"><pre>'m/d/Y'</pre></td>
4037 </tr>
4038
4039 <tr>
4040 <td>SIGNING_BACKEND</td>
4041 <td class="code"><pre>'django.core.signing.TimestampSigner'</pre></td>
4042 </tr>
4043
4044 <tr>
4045 <td>SILENCED_SYSTEM_CHECKS</td>
4046 <td class="code"><pre>[]</pre></td>
4047 </tr>
4048
4049 <tr>
4050 <td>SIMPLE_JWT</td>
4051 <td class="code"><pre>{'ALGORITHM': 'HS256',
4052 'AUTH_HEADER_TYPES': ['Bearer'],
4053 'AUTH_TOKEN_CLASSES': '********************',
4054 'COOKIE_KEY': '********************',
4055 'QUERYPARAM_KEY': '********************',
4056 'SIGNING_KEY': '********************',
4057 'VERIFYING_KEY': '********************'}</pre></td>
4058 </tr>
4059
4060 <tr>
4061 <td>SLACK_MIGHTYSCRIBES_API_TOKEN</td>
4062 <td class="code"><pre>'********************'</pre></td>
4063 </tr>
4064
4065 <tr>
4066 <td>SLACK_MOONROCK_API_TOKEN</td>
4067 <td class="code"><pre>'********************'</pre></td>
4068 </tr>
4069
4070 <tr>
4071 <td>SLACK_SEARCHATLAS_API_TOKEN</td>
4072 <td class="code"><pre>'********************'</pre></td>
4073 </tr>
4074
4075 <tr>
4076 <td>SLACK_SEL_WEBHOOK</td>
4077 <td class="code"><pre>'https://hooks.slack.com/services/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'</pre></td>
4078 </tr>
4079
4080 <tr>
4081 <td>SLACK_WELLAUTHORED_API_TOKEN</td>
4082 <td class="code"><pre>'********************'</pre></td>
4083 </tr>
4084
4085 <tr>
4086 <td>STATICFILES_DIRS</td>
4087 <td class="code"><pre>('/usr/src/app/static/',)</pre></td>
4088 </tr>
4089
4090 <tr>
4091 <td>STATICFILES_FINDERS</td>
4092 <td class="code"><pre>('django.contrib.staticfiles.finders.FileSystemFinder',
4093 'django.contrib.staticfiles.finders.AppDirectoriesFinder')</pre></td>
4094 </tr>
4095
4096 <tr>
4097 <td>STATICFILES_STORAGE</td>
4098 <td class="code"><pre>'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>
4099 </tr>
4100
4101 <tr>
4102 <td>STATIC_ROOT</td>
4103 <td class="code"><pre>'/usr/src/app/_static'</pre></td>
4104 </tr>
4105
4106 <tr>
4107 <td>STATIC_SOURCE</td>
4108 <td class="code"><pre>'/usr/src/app/static/'</pre></td>
4109 </tr>
4110
4111 <tr>
4112 <td>STATIC_URL</td>
4113 <td class="code"><pre>'/static/'</pre></td>
4114 </tr>
4115
4116 <tr>
4117 <td>TEMPLATES</td>
4118 <td class="code"><pre>[{'APP_DIRS': True,
4119 'BACKEND': 'django.template.backends.django.DjangoTemplates',
4120 'DIRS': ['templates/'],
4121 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',
4122 'django.template.context_processors.request',
4123 'django.contrib.auth.context_processors.auth',
4124 'django.contrib.messages.context_processors.messages']}}]</pre></td>
4125 </tr>
4126
4127 <tr>
4128 <td>TEST_MODE</td>
4129 <td class="code"><pre>False</pre></td>
4130 </tr>
4131
4132 <tr>
4133 <td>TEST_NON_SERIALIZED_APPS</td>
4134 <td class="code"><pre>[]</pre></td>
4135 </tr>
4136
4137 <tr>
4138 <td>TEST_RUNNER</td>
4139 <td class="code"><pre>'backlink.tests.runner.LinkGraphTestRunner'</pre></td>
4140 </tr>
4141
4142 <tr>
4143 <td>THIRD_PARTY_APPS</td>
4144 <td class="code"><pre>['rest_framework',
4145 'rest_framework_api_key',
4146 'django_extensions',
4147 'django_celery_beat',
4148 'django_celery_results',
4149 'django_json_widget',
4150 'django_object_actions',
4151 'drf_yasg']</pre></td>
4152 </tr>
4153
4154 <tr>
4155 <td>THOUSAND_SEPARATOR</td>
4156 <td class="code"><pre>','</pre></td>
4157 </tr>
4158
4159 <tr>
4160 <td>TIME_FORMAT</td>
4161 <td class="code"><pre>'P'</pre></td>
4162 </tr>
4163
4164 <tr>
4165 <td>TIME_INPUT_FORMATS</td>
4166 <td class="code"><pre>['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']</pre></td>
4167 </tr>
4168
4169 <tr>
4170 <td>TIME_ZONE</td>
4171 <td class="code"><pre>'UTC'</pre></td>
4172 </tr>
4173
4174 <tr>
4175 <td>TOXICITY_INPUT_BUCKET</td>
4176 <td class="code"><pre>'backlink-toxicity-automl-tables-staging'</pre></td>
4177 </tr>
4178
4179 <tr>
4180 <td>TOXICITY_MODEL_DISPLAY_NAME</td>
4181 <td class="code"><pre>'backlink_toxicity_20210317080419'</pre></td>
4182 </tr>
4183
4184 <tr>
4185 <td>TOXICITY_OUTPUT_BUCKET</td>
4186 <td class="code"><pre>'backlink-toxicity-predictions'</pre></td>
4187 </tr>
4188
4189 <tr>
4190 <td>TOXICITY_PROJECT</td>
4191 <td class="code"><pre>'backlink-toxicity'</pre></td>
4192 </tr>
4193
4194 <tr>
4195 <td>TOXICITY_REGION</td>
4196 <td class="code"><pre>'us-central1'</pre></td>
4197 </tr>
4198
4199 <tr>
4200 <td>TOXICITY_SERVICE_ACCOUNT</td>
4201 <td class="code"><pre>'vendor/google/credentials/backlink-toxicity-ade825466bb8.json'</pre></td>
4202 </tr>
4203
4204 <tr>
4205 <td>USE_I18N</td>
4206 <td class="code"><pre>True</pre></td>
4207 </tr>
4208
4209 <tr>
4210 <td>USE_L10N</td>
4211 <td class="code"><pre>True</pre></td>
4212 </tr>
4213
4214 <tr>
4215 <td>USE_PRODUCTION_DBS</td>
4216 <td class="code"><pre>1</pre></td>
4217 </tr>
4218
4219 <tr>
4220 <td>USE_THOUSAND_SEPARATOR</td>
4221 <td class="code"><pre>False</pre></td>
4222 </tr>
4223
4224 <tr>
4225 <td>USE_TZ</td>
4226 <td class="code"><pre>True</pre></td>
4227 </tr>
4228
4229 <tr>
4230 <td>USE_X_FORWARDED_HOST</td>
4231 <td class="code"><pre>False</pre></td>
4232 </tr>
4233
4234 <tr>
4235 <td>USE_X_FORWARDED_PORT</td>
4236 <td class="code"><pre>False</pre></td>
4237 </tr>
4238
4239 <tr>
4240 <td>WSGI_APPLICATION</td>
4241 <td class="code"><pre>'app.wsgi.application'</pre></td>
4242 </tr>
4243
4244 <tr>
4245 <td>X_FRAME_OPTIONS</td>
4246 <td class="code"><pre>'DENY'</pre></td>
4247 </tr>
4248
4249 <tr>
4250 <td>YEAR_MONTH_FORMAT</td>
4251 <td class="code"><pre>'F Y'</pre></td>
4252 </tr>
4253
4254 </tbody>
4255 </table>
4256
4257</div>
4258
4259 <div id="explanation">
4260 <p>
4261 Youâre seeing this error because you have <code>DEBUG = True</code> in your
4262 Django settings file. Change that to <code>False</code>, and Django will
4263 display a standard page generated by the handler for this status code.
4264 </p>
4265 </div>
4266
4267
4268
4269<link rel="stylesheet" href="/static/debug_toolbar/css/print.css" media="print">
4270<link rel="stylesheet" href="/static/debug_toolbar/css/toolbar.css">
4271
4272
4273<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="module" src="/static/debug_toolbar/js/toolbar.js" async></script>
4274
4275<div id="djDebug" class="djdt-hidden" dir="ltr"
4276
4277 data-default-show="true"
4278 >
4279 <div class="djdt-hidden" id="djDebugToolbar">
4280 <ul id="djDebugPanelList">
4281 <li><a id="djHideToolBarButton" href="#" title="Hide toolbar">Hide »</a></li>
4282
4283
4284
4285<li id="djdt-HistoryPanel" class="djDebugPanelButton">
4286 <input type="checkbox" data-cookie="djdtHistoryPanel" checked title="Disable for next and successive requests">
4287
4288 <a href="#" title="History" class="HistoryPanel">
4289
4290 History
4291
4292
4293 <br><small>/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com</small>
4294
4295
4296
4297 </a>
4298
4299</li>
4300
4301
4302
4303
4304<li id="djdt-VersionsPanel" class="djDebugPanelButton">
4305 <input type="checkbox" data-cookie="djdtVersionsPanel" checked title="Disable for next and successive requests">
4306
4307 <a href="#" title="Versions" class="VersionsPanel">
4308
4309 Versions
4310
4311
4312 <br><small>Django 3.2</small>
4313
4314
4315
4316 </a>
4317
4318</li>
4319
4320
4321
4322
4323<li id="djdt-TimerPanel" class="djDebugPanelButton">
4324 <input type="checkbox" data-cookie="djdtTimerPanel" checked title="Disable for next and successive requests">
4325
4326 <a href="#" title="Time" class="TimerPanel">
4327
4328 Time
4329
4330
4331 <br><small>CPU: 163.88ms (202.47ms)</small>
4332
4333
4334
4335 </a>
4336
4337</li>
4338
4339
4340
4341
4342<li id="djdt-SettingsPanel" class="djDebugPanelButton">
4343 <input type="checkbox" data-cookie="djdtSettingsPanel" checked title="Disable for next and successive requests">
4344
4345 <a href="#" title="Settings from app.settings" class="SettingsPanel">
4346
4347 Settings
4348
4349
4350
4351
4352
4353
4354 </a>
4355
4356</li>
4357
4358
4359
4360
4361<li id="djdt-HeadersPanel" class="djDebugPanelButton">
4362 <input type="checkbox" data-cookie="djdtHeadersPanel" checked title="Disable for next and successive requests">
4363
4364 <a href="#" title="Headers" class="HeadersPanel">
4365
4366 Headers
4367
4368
4369
4370
4371
4372
4373 </a>
4374
4375</li>
4376
4377
4378
4379
4380<li id="djdt-RequestPanel" class="djDebugPanelButton">
4381 <input type="checkbox" data-cookie="djdtRequestPanel" checked title="Disable for next and successive requests">
4382
4383 <a href="#" title="Request" class="RequestPanel">
4384
4385 Request
4386
4387
4388 <br><small>KeywordDifficultyAPIView</small>
4389
4390
4391
4392 </a>
4393
4394</li>
4395
4396
4397
4398
4399<li id="djdt-SQLPanel" class="djDebugPanelButton">
4400 <input type="checkbox" data-cookie="djdtSQLPanel" checked title="Disable for next and successive requests">
4401
4402 <a href="#" title="SQL queries from 1 connection" class="SQLPanel">
4403
4404 SQL
4405
4406
4407 <br><small>1 query in 3.46ms</small>
4408
4409
4410
4411 </a>
4412
4413</li>
4414
4415
4416
4417
4418<li id="djdt-StaticFilesPanel" class="djDebugPanelButton">
4419 <input type="checkbox" data-cookie="djdtStaticFilesPanel" checked title="Disable for next and successive requests">
4420
4421 <a href="#" title="Static files (198 found, 0 used)" class="StaticFilesPanel">
4422
4423 Static files
4424
4425
4426 <br><small>0 files used</small>
4427
4428
4429
4430 </a>
4431
4432</li>
4433
4434
4435
4436
4437<li id="djdt-TemplatesPanel" class="djDebugPanelButton">
4438 <input type="checkbox" data-cookie="djdtTemplatesPanel" checked title="Disable for next and successive requests">
4439
4440 <a href="#" title="Templates (1 rendered)" class="TemplatesPanel">
4441
4442 Templates
4443
4444
4445
4446
4447
4448
4449 </a>
4450
4451</li>
4452
4453
4454
4455
4456<li id="djdt-CachePanel" class="djDebugPanelButton">
4457 <input type="checkbox" data-cookie="djdtCachePanel" checked title="Disable for next and successive requests">
4458
4459 <a href="#" title="Cache calls from 1 backend" class="CachePanel">
4460
4461 Cache
4462
4463
4464 <br><small>0 calls in 0.00ms</small>
4465
4466
4467
4468 </a>
4469
4470</li>
4471
4472
4473
4474
4475<li id="djdt-SignalsPanel" class="djDebugPanelButton">
4476 <input type="checkbox" data-cookie="djdtSignalsPanel" checked title="Disable for next and successive requests">
4477
4478 <a href="#" title="Signals" class="SignalsPanel">
4479
4480 Signals
4481
4482
4483 <br><small>47 receivers of 15 signals</small>
4484
4485
4486
4487 </a>
4488
4489</li>
4490
4491
4492
4493
4494<li id="djdt-LoggingPanel" class="djDebugPanelButton">
4495 <input type="checkbox" data-cookie="djdtLoggingPanel" checked title="Disable for next and successive requests">
4496
4497 <a href="#" title="Log messages" class="LoggingPanel">
4498
4499 Logging
4500
4501
4502 <br><small>11 messages</small>
4503
4504
4505
4506 </a>
4507
4508</li>
4509
4510
4511
4512
4513<li id="djdt-RedirectsPanel" class="djDebugPanelButton">
4514 <input type="checkbox" data-cookie="djdtRedirectsPanel" title="Enable for next and successive requests">
4515
4516 <div class="djdt-contentless djdt-disabled">
4517
4518 Intercept redirects
4519
4520
4521 </div>
4522
4523</li>
4524
4525
4526
4527
4528<li id="djdt-ProfilingPanel" class="djDebugPanelButton">
4529 <input type="checkbox" data-cookie="djdtProfilingPanel" title="Enable for next and successive requests">
4530
4531 <div class="djdt-contentless djdt-disabled">
4532
4533 Profiling
4534
4535
4536 </div>
4537
4538</li>
4539
4540
4541 </ul>
4542 </div>
4543 <div class="djdt-hidden" id="djDebugToolbarHandle">
4544 <div title="Show toolbar" id="djShowToolBarButton">
4545 <span id="djShowToolBarD">D</span><span id="djShowToolBarJ">J</span>DT
4546 </div>
4547 </div>
4548
4549
4550
4551
4552
4553 <div id="HistoryPanel" class="djdt-panelContent djdt-hidden">
4554 <div class="djDebugPanelTitle">
4555 <button type="button" class="djDebugClose">Ã</button>
4556 <h3>History</h3>
4557 </div>
4558 <div class="djDebugPanelContent">
4559
4560 <div class="djdt-scroll">
4561<form method="get" action="/__debug__/history_refresh/">
4562 <input type="hidden" name="store_id" id="id_store_id"><input type="hidden" name="hash" value="4994b801b49bc7bd89d5805db140898871c95a14" id="id_hash">
4563 <button class="refreshHistory">Refresh</button>
4564</form>
4565<table style="max-height:100%;">
4566 <thead>
4567 <tr>
4568 <th>Time</th>
4569 <th>Method</th>
4570 <th>Path</th>
4571 <th>Request Variables</th>
4572 <th>Action</th>
4573 </tr>
4574 </thead>
4575 <tbody id="djdtHistoryRequests">
4576
4577 </tbody>
4578</table>
4579</div>
4580
4581 </div>
4582 </div>
4583
4584
4585
4586
4587
4588
4589 <div id="VersionsPanel" class="djdt-panelContent djdt-hidden">
4590 <div class="djDebugPanelTitle">
4591 <button type="button" class="djDebugClose">Ã</button>
4592 <h3>Versions</h3>
4593 </div>
4594 <div class="djDebugPanelContent">
4595
4596 <div class="djdt-scroll">
4597<table>
4598 <colgroup>
4599 <col class="djdt-width-20">
4600 <col class="djdt-width-20">
4601 <col>
4602 </colgroup>
4603 <thead>
4604 <tr>
4605 <th>Package</th>
4606 <th>Name</th>
4607 <th>Version</th>
4608 </tr>
4609 </thead>
4610 <tbody>
4611
4612 <tr>
4613 <td>Django</td>
4614 <td></td>
4615 <td>3.2</td>
4616 </tr>
4617
4618 <tr>
4619 <td>Python</td>
4620 <td></td>
4621 <td>3.8.9</td>
4622 </tr>
4623
4624 <tr>
4625 <td>debug_toolbar</td>
4626 <td>Debug Toolbar</td>
4627 <td>3.2</td>
4628 </tr>
4629
4630 <tr>
4631 <td>django_celery_beat</td>
4632 <td>Periodic Tasks</td>
4633 <td>2.2.0</td>
4634 </tr>
4635
4636 <tr>
4637 <td>django_celery_results</td>
4638 <td>Celery Results</td>
4639 <td>2.0.0</td>
4640 </tr>
4641
4642 <tr>
4643 <td>django_extensions</td>
4644 <td>Django Extensions</td>
4645 <td>3.1.2</td>
4646 </tr>
4647
4648 <tr>
4649 <td>django_json_widget</td>
4650 <td>Django_Json_Widget</td>
4651 <td>1.0.1</td>
4652 </tr>
4653
4654 <tr>
4655 <td>django_object_actions</td>
4656 <td>Django_Object_Actions</td>
4657 <td>3.0.2</td>
4658 </tr>
4659
4660 <tr>
4661 <td>drf_yasg</td>
4662 <td>Drf_Yasg</td>
4663 <td>1.20.0</td>
4664 </tr>
4665
4666 <tr>
4667 <td>rest_framework</td>
4668 <td>Django REST framework</td>
4669 <td>3.12.4</td>
4670 </tr>
4671
4672 <tr>
4673 <td>rest_framework_api_key</td>
4674 <td>API Key Permissions</td>
4675 <td>2.0.0</td>
4676 </tr>
4677
4678 <tr>
4679 <td>sslserver</td>
4680 <td>Sslserver</td>
4681 <td>0.22</td>
4682 </tr>
4683
4684 </tbody>
4685</table>
4686</div>
4687
4688 </div>
4689 </div>
4690
4691
4692
4693
4694
4695
4696 <div id="TimerPanel" class="djdt-panelContent djdt-hidden">
4697 <div class="djDebugPanelTitle">
4698 <button type="button" class="djDebugClose">Ã</button>
4699 <h3>Time</h3>
4700 </div>
4701 <div class="djDebugPanelContent">
4702
4703 <div class="djdt-scroll">
4704<h4>Resource usage</h4>
4705<table>
4706 <colgroup>
4707 <col class="djdt-width-20">
4708 <col>
4709 </colgroup>
4710 <thead>
4711 <tr>
4712 <th>Resource</th>
4713 <th>Value</th>
4714 </tr>
4715 </thead>
4716 <tbody>
4717
4718 <tr>
4719 <td>User CPU time</td>
4720 <td>155.834 msec</td>
4721 </tr>
4722
4723 <tr>
4724 <td>System CPU time</td>
4725 <td>8.044 msec</td>
4726 </tr>
4727
4728 <tr>
4729 <td>Total CPU time</td>
4730 <td>163.878 msec</td>
4731 </tr>
4732
4733 <tr>
4734 <td>Elapsed time</td>
4735 <td>202.466 msec</td>
4736 </tr>
4737
4738 <tr>
4739 <td>Context switches</td>
4740 <td>155 voluntary, 83 involuntary</td>
4741 </tr>
4742
4743 </tbody>
4744</table>
4745
4746<!-- This hidden div is populated and displayed by code in toolbar.timer.js -->
4747<div id="djDebugBrowserTiming" class="djdt-hidden">
4748 <h4>Browser timing</h4>
4749 <table>
4750 <colgroup>
4751 <col class="djdt-width-20">
4752 <col class="djdt-width-60">
4753 <col class="djdt-width-20">
4754 </colgroup>
4755 <thead>
4756 <tr>
4757 <th>Timing attribute</th>
4758 <th>Timeline</th>
4759 <th>Milliseconds since navigation start (+length)</th>
4760 </tr>
4761 </thead>
4762 <tbody id="djDebugBrowserTimingTableBody">
4763 </tbody>
4764 </table>
4765</div>
4766</div>
4767
4768 </div>
4769 </div>
4770
4771
4772
4773
4774
4775
4776 <div id="SettingsPanel" class="djdt-panelContent djdt-hidden">
4777 <div class="djDebugPanelTitle">
4778 <button type="button" class="djDebugClose">Ã</button>
4779 <h3>Settings from app.settings</h3>
4780 </div>
4781 <div class="djDebugPanelContent">
4782
4783 <div class="djdt-scroll">
4784<table>
4785 <thead>
4786 <tr>
4787 <th>Setting</th>
4788 <th>Value</th>
4789 </tr>
4790 </thead>
4791 <tbody>
4792
4793 <tr>
4794 <td>ABSOLUTE_URL_OVERRIDES</td>
4795 <td><code>{}</code></td>
4796 </tr>
4797
4798 <tr>
4799 <td>ADMINS</td>
4800 <td><code>[]</code></td>
4801 </tr>
4802
4803 <tr>
4804 <td>ALLOWED_HOSTS</td>
4805 <td><code>['backlink.searchatlas.com',
4806 'backlinkapp-backlinkapp-production.backlinkapp-production.svc.cluster.local',
4807 'backlink-staging.searchatlas.com',
4808 'backlink.linkgraph.io']</code></td>
4809 </tr>
4810
4811 <tr>
4812 <td>APPEND_SLASH</td>
4813 <td><code>True</code></td>
4814 </tr>
4815
4816 <tr>
4817 <td>AUTHENTICATION_BACKENDS</td>
4818 <td><code>['django.contrib.auth.backends.ModelBackend']</code></td>
4819 </tr>
4820
4821 <tr>
4822 <td>AUTH_PASSWORD_VALIDATORS</td>
4823 <td><code>'********************'</code></td>
4824 </tr>
4825
4826 <tr>
4827 <td>AUTH_USER_MODEL</td>
4828 <td><code>'backlink.user'</code></td>
4829 </tr>
4830
4831 <tr>
4832 <td>BACKLINK_ENVIRONMENT</td>
4833 <td><code>'production'</code></td>
4834 </tr>
4835
4836 <tr>
4837 <td>BACKLINK_WAREHOUSE_URL</td>
4838 <td><code>'clickhouse://backlink:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dab8bce3bfbbeae2b9e2e9ecedecbfbceab8b9ededeeefbeebebefe2b9bbeeeebb9ab9b6b3b9b1b2b5afa9bff7b8bbb9b1b6b3b4b1f4b9b6b3b9b1b2b5afa9bf">[email protected]</a>/backlink_data'</code></td>
4839 </tr>
4840
4841 <tr>
4842 <td>BASE_DIR</td>
4843 <td><code>'/usr/src/app'</code></td>
4844 </tr>
4845
4846 <tr>
4847 <td>CACHES</td>
4848 <td><code>{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}</code></td>
4849 </tr>
4850
4851 <tr>
4852 <td>CACHE_MIDDLEWARE_ALIAS</td>
4853 <td><code>'default'</code></td>
4854 </tr>
4855
4856 <tr>
4857 <td>CACHE_MIDDLEWARE_KEY_PREFIX</td>
4858 <td><code>'********************'</code></td>
4859 </tr>
4860
4861 <tr>
4862 <td>CACHE_MIDDLEWARE_SECONDS</td>
4863 <td><code>600</code></td>
4864 </tr>
4865
4866 <tr>
4867 <td>CELERY_ACCEPT_CONTENT</td>
4868 <td><code>['application/json']</code></td>
4869 </tr>
4870
4871 <tr>
4872 <td>CELERY_ALWAYS_EAGER</td>
4873 <td><code>False</code></td>
4874 </tr>
4875
4876 <tr>
4877 <td>CELERY_BEAT_SCHEDULE</td>
4878 <td><code>{'periodically-get-subscription-info': {'schedule': <crontab: 0 15 * * * (m/h/d/dM/MY)>,
4879 'task': 'backlink.tasks.periodically_get_subscription_info'},
4880 'periodically-populate-backlink-toxicity-data': {'schedule': <crontab: 0 * * * * (m/h/d/dM/MY)>,
4881 'task': 'backlink.tasks.periodically_populate_backlink_toxicity_data'}}</code></td>
4882 </tr>
4883
4884 <tr>
4885 <td>CELERY_BROKER_URL</td>
4886 <td><code>'redis://redis-backlinkapp-production-master:6379'</code></td>
4887 </tr>
4888
4889 <tr>
4890 <td>CELERY_RESULT_BACKEND</td>
4891 <td><code>'django-db'</code></td>
4892 </tr>
4893
4894 <tr>
4895 <td>CELERY_RESULT_SERIALIZER</td>
4896 <td><code>'json'</code></td>
4897 </tr>
4898
4899 <tr>
4900 <td>CELERY_TASK_SERIALIZER</td>
4901 <td><code>'json'</code></td>
4902 </tr>
4903
4904 <tr>
4905 <td>CELERY_TIMEZONE</td>
4906 <td><code>'UTC'</code></td>
4907 </tr>
4908
4909 <tr>
4910 <td>CH_CLUSTER_NAME</td>
4911 <td><code>'cluster'</code></td>
4912 </tr>
4913
4914 <tr>
4915 <td>CLICKHOUSE_WAREHOUSE_SETTINGS</td>
4916 <td><code>{'cluster_name': 'cluster',
4917 'is_cluster': True,
4918 'url': 'clickhouse://backlink:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b3d1d58ad6d2838bd08b80858485d6d583d1d084848786d78282868bd0d28787d2f3d0dfdad0d8dbdcc6c0d69ed1d2d0d8dfdaddd89dd0dfdad0d8dbdcc6c0d6">[email protected]</a>/backlink_data'}</code></td>
4919 </tr>
4920
4921 <tr>
4922 <td>CORE_APPS</td>
4923 <td><code>['backlink.apps.BacklinkConfig']</code></td>
4924 </tr>
4925
4926 <tr>
4927 <td>CORS_ALLOW_CREDENTIALS</td>
4928 <td><code>True</code></td>
4929 </tr>
4930
4931 <tr>
4932 <td>CORS_ORIGIN_WHITELIST</td>
4933 <td><code>['https://dashboard.linkgraph.io', 'http://localhost:3000']</code></td>
4934 </tr>
4935
4936 <tr>
4937 <td>CSRF_COOKIE_AGE</td>
4938 <td><code>31449600</code></td>
4939 </tr>
4940
4941 <tr>
4942 <td>CSRF_COOKIE_DOMAIN</td>
4943 <td><code>None</code></td>
4944 </tr>
4945
4946 <tr>
4947 <td>CSRF_COOKIE_HTTPONLY</td>
4948 <td><code>False</code></td>
4949 </tr>
4950
4951 <tr>
4952 <td>CSRF_COOKIE_NAME</td>
4953 <td><code>'csrftoken'</code></td>
4954 </tr>
4955
4956 <tr>
4957 <td>CSRF_COOKIE_PATH</td>
4958 <td><code>'/'</code></td>
4959 </tr>
4960
4961 <tr>
4962 <td>CSRF_COOKIE_SAMESITE</td>
4963 <td><code>'Lax'</code></td>
4964 </tr>
4965
4966 <tr>
4967 <td>CSRF_COOKIE_SECURE</td>
4968 <td><code>False</code></td>
4969 </tr>
4970
4971 <tr>
4972 <td>CSRF_FAILURE_VIEW</td>
4973 <td><code>'django.views.csrf.csrf_failure'</code></td>
4974 </tr>
4975
4976 <tr>
4977 <td>CSRF_HEADER_NAME</td>
4978 <td><code>'HTTP_X_CSRFTOKEN'</code></td>
4979 </tr>
4980
4981 <tr>
4982 <td>CSRF_TRUSTED_ORIGINS</td>
4983 <td><code>[]</code></td>
4984 </tr>
4985
4986 <tr>
4987 <td>CSRF_USE_SESSIONS</td>
4988 <td><code>False</code></td>
4989 </tr>
4990
4991 <tr>
4992 <td>DATABASES</td>
4993 <td><code>{'default': {'ATOMIC_REQUESTS': False,
4994 'AUTOCOMMIT': True,
4995 'CONN_MAX_AGE': 0,
4996 'ENGINE': 'django.db.backends.postgresql',
4997 'HOST': 'domainprospector-prod-db.cloudsql-proxy',
4998 'NAME': 'backlinkapp_db',
4999 'OPTIONS': {},
5000 'PASSWORD': '********************',
5001 'PORT': '5432',
5002 'TEST': {'CHARSET': None,
5003 'COLLATION': None,
5004 'MIGRATE': True,
5005 'MIRROR': None,
5006 'NAME': None},
5007 'TIME_ZONE': None,
5008 'USER': 'backlinkapp'}}</code></td>
5009 </tr>
5010
5011 <tr>
5012 <td>DATABASE_ROUTERS</td>
5013 <td><code>[]</code></td>
5014 </tr>
5015
5016 <tr>
5017 <td>DATA_UPLOAD_MAX_MEMORY_SIZE</td>
5018 <td><code>2621440</code></td>
5019 </tr>
5020
5021 <tr>
5022 <td>DATA_UPLOAD_MAX_NUMBER_FIELDS</td>
5023 <td><code>1000</code></td>
5024 </tr>
5025
5026 <tr>
5027 <td>DATETIME_FORMAT</td>
5028 <td><code>'N j, Y, P'</code></td>
5029 </tr>
5030
5031 <tr>
5032 <td>DATETIME_INPUT_FORMATS</td>
5033 <td><code>['%Y-%m-%d %H:%M:%S',
5034 '%Y-%m-%d %H:%M:%S.%f',
5035 '%Y-%m-%d %H:%M',
5036 '%m/%d/%Y %H:%M:%S',
5037 '%m/%d/%Y %H:%M:%S.%f',
5038 '%m/%d/%Y %H:%M',
5039 '%m/%d/%y %H:%M:%S',
5040 '%m/%d/%y %H:%M:%S.%f',
5041 '%m/%d/%y %H:%M']</code></td>
5042 </tr>
5043
5044 <tr>
5045 <td>DATE_FORMAT</td>
5046 <td><code>'N j, Y'</code></td>
5047 </tr>
5048
5049 <tr>
5050 <td>DATE_INPUT_FORMATS</td>
5051 <td><code>['%Y-%m-%d',
5052 '%m/%d/%Y',
5053 '%m/%d/%y',
5054 '%b %d %Y',
5055 '%b %d, %Y',
5056 '%d %b %Y',
5057 '%d %b, %Y',
5058 '%B %d %Y',
5059 '%B %d, %Y',
5060 '%d %B %Y',
5061 '%d %B, %Y']</code></td>
5062 </tr>
5063
5064 <tr>
5065 <td>DB_ENGINE</td>
5066 <td><code>'django.db.backends.postgresql'</code></td>
5067 </tr>
5068
5069 <tr>
5070 <td>DB_HOST</td>
5071 <td><code>'domainprospector-prod-db.cloudsql-proxy'</code></td>
5072 </tr>
5073
5074 <tr>
5075 <td>DB_NAME</td>
5076 <td><code>'backlinkapp_db'</code></td>
5077 </tr>
5078
5079 <tr>
5080 <td>DB_PORT</td>
5081 <td><code>'5432'</code></td>
5082 </tr>
5083
5084 <tr>
5085 <td>DB_PW</td>
5086 <td><code>'61gh25edt6'</code></td>
5087 </tr>
5088
5089 <tr>
5090 <td>DB_USER</td>
5091 <td><code>'backlinkapp'</code></td>
5092 </tr>
5093
5094 <tr>
5095 <td>DEBUG</td>
5096 <td><code>1</code></td>
5097 </tr>
5098
5099 <tr>
5100 <td>DEBUG_PROPAGATE_EXCEPTIONS</td>
5101 <td><code>False</code></td>
5102 </tr>
5103
5104 <tr>
5105 <td>DEBUG_TOOLBAR_CONFIG</td>
5106 <td><code>{'SHOW_TOOLBAR_CALLBACK': <function <lambda> at 0x7f6adb2afd30>}</code></td>
5107 </tr>
5108
5109 <tr>
5110 <td>DECIMAL_SEPARATOR</td>
5111 <td><code>'.'</code></td>
5112 </tr>
5113
5114 <tr>
5115 <td>DEFAULT_AUTO_FIELD</td>
5116 <td><code>'django.db.models.AutoField'</code></td>
5117 </tr>
5118
5119 <tr>
5120 <td>DEFAULT_CHARSET</td>
5121 <td><code>'utf-8'</code></td>
5122 </tr>
5123
5124 <tr>
5125 <td>DEFAULT_EXCEPTION_REPORTER</td>
5126 <td><code>'django.views.debug.ExceptionReporter'</code></td>
5127 </tr>
5128
5129 <tr>
5130 <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>
5131 <td><code>'django.views.debug.SafeExceptionReporterFilter'</code></td>
5132 </tr>
5133
5134 <tr>
5135 <td>DEFAULT_FILE_STORAGE</td>
5136 <td><code>'storages.backends.gcloud.GoogleCloudStorage'</code></td>
5137 </tr>
5138
5139 <tr>
5140 <td>DEFAULT_FROM_EMAIL</td>
5141 <td><code>'<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0b7c6e69666a787f6e794b6764686a676364787f">[email protected]</a>'</code></td>
5142 </tr>
5143
5144 <tr>
5145 <td>DEFAULT_HASHING_ALGORITHM</td>
5146 <td><code>'sha256'</code></td>
5147 </tr>
5148
5149 <tr>
5150 <td>DEFAULT_INDEX_TABLESPACE</td>
5151 <td><code>''</code></td>
5152 </tr>
5153
5154 <tr>
5155 <td>DEFAULT_TABLESPACE</td>
5156 <td><code>''</code></td>
5157 </tr>
5158
5159 <tr>
5160 <td>DISALLOWED_USER_AGENTS</td>
5161 <td><code>[]</code></td>
5162 </tr>
5163
5164 <tr>
5165 <td>DJANGO_APPS</td>
5166 <td><code>['django.contrib.admin',
5167 'django.contrib.auth',
5168 'django.contrib.contenttypes',
5169 'django.contrib.sessions',
5170 'django.contrib.messages',
5171 'django.contrib.staticfiles',
5172 'django.contrib.humanize']</code></td>
5173 </tr>
5174
5175 <tr>
5176 <td>EMAIL_BACKEND</td>
5177 <td><code>'django.core.mail.backends.smtp.EmailBackend'</code></td>
5178 </tr>
5179
5180 <tr>
5181 <td>EMAIL_HOST</td>
5182 <td><code>'localhost'</code></td>
5183 </tr>
5184
5185 <tr>
5186 <td>EMAIL_HOST_PASSWORD</td>
5187 <td><code>'********************'</code></td>
5188 </tr>
5189
5190 <tr>
5191 <td>EMAIL_HOST_USER</td>
5192 <td><code>''</code></td>
5193 </tr>
5194
5195 <tr>
5196 <td>EMAIL_PORT</td>
5197 <td><code>25</code></td>
5198 </tr>
5199
5200 <tr>
5201 <td>EMAIL_SSL_CERTFILE</td>
5202 <td><code>None</code></td>
5203 </tr>
5204
5205 <tr>
5206 <td>EMAIL_SSL_KEYFILE</td>
5207 <td><code>'********************'</code></td>
5208 </tr>
5209
5210 <tr>
5211 <td>EMAIL_SUBJECT_PREFIX</td>
5212 <td><code>'[Django] '</code></td>
5213 </tr>
5214
5215 <tr>
5216 <td>EMAIL_TIMEOUT</td>
5217 <td><code>None</code></td>
5218 </tr>
5219
5220 <tr>
5221 <td>EMAIL_USE_LOCALTIME</td>
5222 <td><code>False</code></td>
5223 </tr>
5224
5225 <tr>
5226 <td>EMAIL_USE_SSL</td>
5227 <td><code>False</code></td>
5228 </tr>
5229
5230 <tr>
5231 <td>EMAIL_USE_TLS</td>
5232 <td><code>False</code></td>
5233 </tr>
5234
5235 <tr>
5236 <td>ENABLE_CELERY_PERIODIC_TASKS</td>
5237 <td><code>1</code></td>
5238 </tr>
5239
5240 <tr>
5241 <td>ENV</td>
5242 <td><code>'PROD_'</code></td>
5243 </tr>
5244
5245 <tr>
5246 <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>
5247 <td><code>None</code></td>
5248 </tr>
5249
5250 <tr>
5251 <td>FILE_UPLOAD_HANDLERS</td>
5252 <td><code>['django.core.files.uploadhandler.MemoryFileUploadHandler',
5253 'django.core.files.uploadhandler.TemporaryFileUploadHandler']</code></td>
5254 </tr>
5255
5256 <tr>
5257 <td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>
5258 <td><code>2621440</code></td>
5259 </tr>
5260
5261 <tr>
5262 <td>FILE_UPLOAD_PERMISSIONS</td>
5263 <td><code>420</code></td>
5264 </tr>
5265
5266 <tr>
5267 <td>FILE_UPLOAD_TEMP_DIR</td>
5268 <td><code>None</code></td>
5269 </tr>
5270
5271 <tr>
5272 <td>FIRST_DAY_OF_WEEK</td>
5273 <td><code>0</code></td>
5274 </tr>
5275
5276 <tr>
5277 <td>FIXTURE_DIRS</td>
5278 <td><code>[]</code></td>
5279 </tr>
5280
5281 <tr>
5282 <td>FORCE_SCRIPT_NAME</td>
5283 <td><code>None</code></td>
5284 </tr>
5285
5286 <tr>
5287 <td>FORMAT_MODULE_PATH</td>
5288 <td><code>None</code></td>
5289 </tr>
5290
5291 <tr>
5292 <td>FORM_RENDERER</td>
5293 <td><code>'django.forms.renderers.DjangoTemplates'</code></td>
5294 </tr>
5295
5296 <tr>
5297 <td>GS_BUCKET_NAME</td>
5298 <td><code>'backlink-tool-screenshots'</code></td>
5299 </tr>
5300
5301 <tr>
5302 <td>GS_CREDENTIALS</td>
5303 <td><code><google.oauth2.service_account.Credentials object at 0x7f6adb27d7f0></code></td>
5304 </tr>
5305
5306 <tr>
5307 <td>HOST</td>
5308 <td><code>'backlink.searchatlas.com'</code></td>
5309 </tr>
5310
5311 <tr>
5312 <td>IGNORABLE_404_URLS</td>
5313 <td><code>[]</code></td>
5314 </tr>
5315
5316 <tr>
5317 <td>INSTALLED_APPS</td>
5318 <td><code>['django.contrib.admin',
5319 'django.contrib.auth',
5320 'django.contrib.contenttypes',
5321 'django.contrib.sessions',
5322 'django.contrib.messages',
5323 'django.contrib.staticfiles',
5324 'django.contrib.humanize',
5325 'backlink.apps.BacklinkConfig',
5326 'rest_framework',
5327 'rest_framework_api_key',
5328 'django_extensions',
5329 'django_celery_beat',
5330 'django_celery_results',
5331 'django_json_widget',
5332 'django_object_actions',
5333 'drf_yasg',
5334 'sslserver',
5335 'debug_toolbar']</code></td>
5336 </tr>
5337
5338 <tr>
5339 <td>INTERNAL_IPS</td>
5340 <td><code>['127.0.0.1']</code></td>
5341 </tr>
5342
5343 <tr>
5344 <td>LANGUAGES</td>
5345 <td><code>[('af', 'Afrikaans'),
5346 ('ar', 'Arabic'),
5347 ('ar-dz', 'Algerian Arabic'),
5348 ('ast', 'Asturian'),
5349 ('az', 'Azerbaijani'),
5350 ('bg', 'Bulgarian'),
5351 ('be', 'Belarusian'),
5352 ('bn', 'Bengali'),
5353 ('br', 'Breton'),
5354 ('bs', 'Bosnian'),
5355 ('ca', 'Catalan'),
5356 ('cs', 'Czech'),
5357 ('cy', 'Welsh'),
5358 ('da', 'Danish'),
5359 ('de', 'German'),
5360 ('dsb', 'Lower Sorbian'),
5361 ('el', 'Greek'),
5362 ('en', 'English'),
5363 ('en-au', 'Australian English'),
5364 ('en-gb', 'British English'),
5365 ('eo', 'Esperanto'),
5366 ('es', 'Spanish'),
5367 ('es-ar', 'Argentinian Spanish'),
5368 ('es-co', 'Colombian Spanish'),
5369 ('es-mx', 'Mexican Spanish'),
5370 ('es-ni', 'Nicaraguan Spanish'),
5371 ('es-ve', 'Venezuelan Spanish'),
5372 ('et', 'Estonian'),
5373 ('eu', 'Basque'),
5374 ('fa', 'Persian'),
5375 ('fi', 'Finnish'),
5376 ('fr', 'French'),
5377 ('fy', 'Frisian'),
5378 ('ga', 'Irish'),
5379 ('gd', 'Scottish Gaelic'),
5380 ('gl', 'Galician'),
5381 ('he', 'Hebrew'),
5382 ('hi', 'Hindi'),
5383 ('hr', 'Croatian'),
5384 ('hsb', 'Upper Sorbian'),
5385 ('hu', 'Hungarian'),
5386 ('hy', 'Armenian'),
5387 ('ia', 'Interlingua'),
5388 ('id', 'Indonesian'),
5389 ('ig', 'Igbo'),
5390 ('io', 'Ido'),
5391 ('is', 'Icelandic'),
5392 ('it', 'Italian'),
5393 ('ja', 'Japanese'),
5394 ('ka', 'Georgian'),
5395 ('kab', 'Kabyle'),
5396 ('kk', 'Kazakh'),
5397 ('km', 'Khmer'),
5398 ('kn', 'Kannada'),
5399 ('ko', 'Korean'),
5400 ('ky', 'Kyrgyz'),
5401 ('lb', 'Luxembourgish'),
5402 ('lt', 'Lithuanian'),
5403 ('lv', 'Latvian'),
5404 ('mk', 'Macedonian'),
5405 ('ml', 'Malayalam'),
5406 ('mn', 'Mongolian'),
5407 ('mr', 'Marathi'),
5408 ('my', 'Burmese'),
5409 ('nb', 'Norwegian Bokmål'),
5410 ('ne', 'Nepali'),
5411 ('nl', 'Dutch'),
5412 ('nn', 'Norwegian Nynorsk'),
5413 ('os', 'Ossetic'),
5414 ('pa', 'Punjabi'),
5415 ('pl', 'Polish'),
5416 ('pt', 'Portuguese'),
5417 ('pt-br', 'Brazilian Portuguese'),
5418 ('ro', 'Romanian'),
5419 ('ru', 'Russian'),
5420 ('sk', 'Slovak'),
5421 ('sl', 'Slovenian'),
5422 ('sq', 'Albanian'),
5423 ('sr', 'Serbian'),
5424 ('sr-latn', 'Serbian Latin'),
5425 ('sv', 'Swedish'),
5426 ('sw', 'Swahili'),
5427 ('ta', 'Tamil'),
5428 ('te', 'Telugu'),
5429 ('tg', 'Tajik'),
5430 ('th', 'Thai'),
5431 ('tk', 'Turkmen'),
5432 ('tr', 'Turkish'),
5433 ('tt', 'Tatar'),
5434 ('udm', 'Udmurt'),
5435 ('uk', 'Ukrainian'),
5436 ('ur', 'Urdu'),
5437 ('uz', 'Uzbek'),
5438 ('vi', 'Vietnamese'),
5439 ('zh-hans', 'Simplified Chinese'),
5440 ('zh-hant', 'Traditional Chinese')]</code></td>
5441 </tr>
5442
5443 <tr>
5444 <td>LANGUAGES_BIDI</td>
5445 <td><code>['he', 'ar', 'ar-dz', 'fa', 'ur']</code></td>
5446 </tr>
5447
5448 <tr>
5449 <td>LANGUAGE_CODE</td>
5450 <td><code>'en-us'</code></td>
5451 </tr>
5452
5453 <tr>
5454 <td>LANGUAGE_COOKIE_AGE</td>
5455 <td><code>None</code></td>
5456 </tr>
5457
5458 <tr>
5459 <td>LANGUAGE_COOKIE_DOMAIN</td>
5460 <td><code>None</code></td>
5461 </tr>
5462
5463 <tr>
5464 <td>LANGUAGE_COOKIE_HTTPONLY</td>
5465 <td><code>False</code></td>
5466 </tr>
5467
5468 <tr>
5469 <td>LANGUAGE_COOKIE_NAME</td>
5470 <td><code>'django_language'</code></td>
5471 </tr>
5472
5473 <tr>
5474 <td>LANGUAGE_COOKIE_PATH</td>
5475 <td><code>'/'</code></td>
5476 </tr>
5477
5478 <tr>
5479 <td>LANGUAGE_COOKIE_SAMESITE</td>
5480 <td><code>None</code></td>
5481 </tr>
5482
5483 <tr>
5484 <td>LANGUAGE_COOKIE_SECURE</td>
5485 <td><code>False</code></td>
5486 </tr>
5487
5488 <tr>
5489 <td>LINKGRAPHIO_EMAIL_CONNECTION</td>
5490 <td><code>{'host': 'email-smtp.us-east-1.amazonaws.com',
5491 'password': '********************',
5492 'port': 587,
5493 'sender': '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="670506040c0b0e090c270b0e090c001506170f490e08">[email protected]</a>',
5494 'use_tls': True,
5495 'username': ''}</code></td>
5496 </tr>
5497
5498 <tr>
5499 <td>LOCALE_PATHS</td>
5500 <td><code>[]</code></td>
5501 </tr>
5502
5503 <tr>
5504 <td>LOGGING</td>
5505 <td><code>{'disable_existing_loggers': False,
5506 'formatters': {'timestamp': {'format': '{asctime} {levelname} {module} '
5507 '{message}',
5508 'style': '{'}},
5509 'handlers': {'console': {'class': 'logging.StreamHandler',
5510 'formatter': 'timestamp'}},
5511 'root': {'handlers': ['console'], 'level': 'DEBUG'},
5512 'version': 1}</code></td>
5513 </tr>
5514
5515 <tr>
5516 <td>LOGGING_CONFIG</td>
5517 <td><code>'logging.config.dictConfig'</code></td>
5518 </tr>
5519
5520 <tr>
5521 <td>LOGIN_REDIRECT_URL</td>
5522 <td><code>'/accounts/profile/'</code></td>
5523 </tr>
5524
5525 <tr>
5526 <td>LOGIN_URL</td>
5527 <td><code>'/accounts/login/'</code></td>
5528 </tr>
5529
5530 <tr>
5531 <td>LOGOUT_REDIRECT_URL</td>
5532 <td><code>None</code></td>
5533 </tr>
5534
5535 <tr>
5536 <td>MAIL_NOTIFICATIONS_ENABLED</td>
5537 <td><code>False</code></td>
5538 </tr>
5539
5540 <tr>
5541 <td>MANAGERS</td>
5542 <td><code>[]</code></td>
5543 </tr>
5544
5545 <tr>
5546 <td>MEDIA_ROOT</td>
5547 <td><code>'/usr/src/app/media'</code></td>
5548 </tr>
5549
5550 <tr>
5551 <td>MEDIA_URL</td>
5552 <td><code>'/media/'</code></td>
5553 </tr>
5554
5555 <tr>
5556 <td>MESSAGE_STORAGE</td>
5557 <td><code>'django.contrib.messages.storage.fallback.FallbackStorage'</code></td>
5558 </tr>
5559
5560 <tr>
5561 <td>MIDDLEWARE</td>
5562 <td><code>['debug_toolbar.middleware.DebugToolbarMiddleware',
5563 'django.middleware.security.SecurityMiddleware',
5564 'django.contrib.sessions.middleware.SessionMiddleware',
5565 'corsheaders.middleware.CorsMiddleware',
5566 'django.middleware.common.CommonMiddleware',
5567 'django.middleware.csrf.CsrfViewMiddleware',
5568 'django.contrib.auth.middleware.AuthenticationMiddleware',
5569 'django.contrib.messages.middleware.MessageMiddleware',
5570 'django.middleware.clickjacking.XFrameOptionsMiddleware']</code></td>
5571 </tr>
5572
5573 <tr>
5574 <td>MIGRATION_MODULES</td>
5575 <td><code>{}</code></td>
5576 </tr>
5577
5578 <tr>
5579 <td>MONTH_DAY_FORMAT</td>
5580 <td><code>'F j'</code></td>
5581 </tr>
5582
5583 <tr>
5584 <td>NUMBER_GROUPING</td>
5585 <td><code>0</code></td>
5586 </tr>
5587
5588 <tr>
5589 <td>PASSWORD_HASHERS</td>
5590 <td><code>'********************'</code></td>
5591 </tr>
5592
5593 <tr>
5594 <td>PASSWORD_RESET_TIMEOUT</td>
5595 <td><code>'********************'</code></td>
5596 </tr>
5597
5598 <tr>
5599 <td>PASSWORD_RESET_TIMEOUT_DAYS</td>
5600 <td><code>'********************'</code></td>
5601 </tr>
5602
5603 <tr>
5604 <td>PREPEND_WWW</td>
5605 <td><code>False</code></td>
5606 </tr>
5607
5608 <tr>
5609 <td>REST_FRAMEWORK</td>
5610 <td><code>{'DEFAULT_AUTHENTICATION_CLASSES': (),
5611 'DEFAULT_PERMISSION_CLASSES': (),
5612 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
5613 'STRICT_JSON': False}</code></td>
5614 </tr>
5615
5616 <tr>
5617 <td>ROOT_URLCONF</td>
5618 <td><code>'app.urls'</code></td>
5619 </tr>
5620
5621 <tr>
5622 <td>SECRET_KEY</td>
5623 <td><code>'********************'</code></td>
5624 </tr>
5625
5626 <tr>
5627 <td>SECURE_BROWSER_XSS_FILTER</td>
5628 <td><code>False</code></td>
5629 </tr>
5630
5631 <tr>
5632 <td>SECURE_CONTENT_TYPE_NOSNIFF</td>
5633 <td><code>True</code></td>
5634 </tr>
5635
5636 <tr>
5637 <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>
5638 <td><code>False</code></td>
5639 </tr>
5640
5641 <tr>
5642 <td>SECURE_HSTS_PRELOAD</td>
5643 <td><code>False</code></td>
5644 </tr>
5645
5646 <tr>
5647 <td>SECURE_HSTS_SECONDS</td>
5648 <td><code>0</code></td>
5649 </tr>
5650
5651 <tr>
5652 <td>SECURE_PROXY_SSL_HEADER</td>
5653 <td><code>('HTTP_X_FORWARDED_PROTO', 'https')</code></td>
5654 </tr>
5655
5656 <tr>
5657 <td>SECURE_REDIRECT_EXEMPT</td>
5658 <td><code>[]</code></td>
5659 </tr>
5660
5661 <tr>
5662 <td>SECURE_REFERRER_POLICY</td>
5663 <td><code>'same-origin'</code></td>
5664 </tr>
5665
5666 <tr>
5667 <td>SECURE_SSL_HOST</td>
5668 <td><code>None</code></td>
5669 </tr>
5670
5671 <tr>
5672 <td>SECURE_SSL_REDIRECT</td>
5673 <td><code>False</code></td>
5674 </tr>
5675
5676 <tr>
5677 <td>SERVER_EMAIL</td>
5678 <td><code>'<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="71031e1e05311d1e12101d191e0205">[email protected]</a>'</code></td>
5679 </tr>
5680
5681 <tr>
5682 <td>SESSION_CACHE_ALIAS</td>
5683 <td><code>'default'</code></td>
5684 </tr>
5685
5686 <tr>
5687 <td>SESSION_COOKIE_AGE</td>
5688 <td><code>1209600</code></td>
5689 </tr>
5690
5691 <tr>
5692 <td>SESSION_COOKIE_DOMAIN</td>
5693 <td><code>None</code></td>
5694 </tr>
5695
5696 <tr>
5697 <td>SESSION_COOKIE_HTTPONLY</td>
5698 <td><code>True</code></td>
5699 </tr>
5700
5701 <tr>
5702 <td>SESSION_COOKIE_NAME</td>
5703 <td><code>'sessionid'</code></td>
5704 </tr>
5705
5706 <tr>
5707 <td>SESSION_COOKIE_PATH</td>
5708 <td><code>'/'</code></td>
5709 </tr>
5710
5711 <tr>
5712 <td>SESSION_COOKIE_SAMESITE</td>
5713 <td><code>None</code></td>
5714 </tr>
5715
5716 <tr>
5717 <td>SESSION_COOKIE_SECURE</td>
5718 <td><code>False</code></td>
5719 </tr>
5720
5721 <tr>
5722 <td>SESSION_ENGINE</td>
5723 <td><code>'django.contrib.sessions.backends.db'</code></td>
5724 </tr>
5725
5726 <tr>
5727 <td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>
5728 <td><code>False</code></td>
5729 </tr>
5730
5731 <tr>
5732 <td>SESSION_FILE_PATH</td>
5733 <td><code>None</code></td>
5734 </tr>
5735
5736 <tr>
5737 <td>SESSION_SAVE_EVERY_REQUEST</td>
5738 <td><code>False</code></td>
5739 </tr>
5740
5741 <tr>
5742 <td>SESSION_SERIALIZER</td>
5743 <td><code>'django.contrib.sessions.serializers.JSONSerializer'</code></td>
5744 </tr>
5745
5746 <tr>
5747 <td>SETTINGS_MODULE</td>
5748 <td><code>'app.settings'</code></td>
5749 </tr>
5750
5751 <tr>
5752 <td>SHORT_DATETIME_FORMAT</td>
5753 <td><code>'m/d/Y P'</code></td>
5754 </tr>
5755
5756 <tr>
5757 <td>SHORT_DATE_FORMAT</td>
5758 <td><code>'m/d/Y'</code></td>
5759 </tr>
5760
5761 <tr>
5762 <td>SIGNING_BACKEND</td>
5763 <td><code>'django.core.signing.TimestampSigner'</code></td>
5764 </tr>
5765
5766 <tr>
5767 <td>SILENCED_SYSTEM_CHECKS</td>
5768 <td><code>[]</code></td>
5769 </tr>
5770
5771 <tr>
5772 <td>SIMPLE_JWT</td>
5773 <td><code>{'ALGORITHM': 'HS256',
5774 'AUTH_HEADER_TYPES': ['Bearer'],
5775 'AUTH_TOKEN_CLASSES': '********************',
5776 'COOKIE_KEY': '********************',
5777 'QUERYPARAM_KEY': '********************',
5778 'SIGNING_KEY': '********************',
5779 'VERIFYING_KEY': '********************'}</code></td>
5780 </tr>
5781
5782 <tr>
5783 <td>SLACK_MIGHTYSCRIBES_API_TOKEN</td>
5784 <td><code>'********************'</code></td>
5785 </tr>
5786
5787 <tr>
5788 <td>SLACK_MOONROCK_API_TOKEN</td>
5789 <td><code>'********************'</code></td>
5790 </tr>
5791
5792 <tr>
5793 <td>SLACK_SEARCHATLAS_API_TOKEN</td>
5794 <td><code>'********************'</code></td>
5795 </tr>
5796
5797 <tr>
5798 <td>SLACK_SEL_WEBHOOK</td>
5799 <td><code>'https://hooks.slack.com/services/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'</code></td>
5800 </tr>
5801
5802 <tr>
5803 <td>SLACK_WELLAUTHORED_API_TOKEN</td>
5804 <td><code>'********************'</code></td>
5805 </tr>
5806
5807 <tr>
5808 <td>STATICFILES_DIRS</td>
5809 <td><code>('/usr/src/app/static/',)</code></td>
5810 </tr>
5811
5812 <tr>
5813 <td>STATICFILES_FINDERS</td>
5814 <td><code>('django.contrib.staticfiles.finders.FileSystemFinder',
5815 'django.contrib.staticfiles.finders.AppDirectoriesFinder')</code></td>
5816 </tr>
5817
5818 <tr>
5819 <td>STATICFILES_STORAGE</td>
5820 <td><code>'django.contrib.staticfiles.storage.StaticFilesStorage'</code></td>
5821 </tr>
5822
5823 <tr>
5824 <td>STATIC_ROOT</td>
5825 <td><code>'/usr/src/app/_static'</code></td>
5826 </tr>
5827
5828 <tr>
5829 <td>STATIC_SOURCE</td>
5830 <td><code>'/usr/src/app/static/'</code></td>
5831 </tr>
5832
5833 <tr>
5834 <td>STATIC_URL</td>
5835 <td><code>'/static/'</code></td>
5836 </tr>
5837
5838 <tr>
5839 <td>TEMPLATES</td>
5840 <td><code>[{'APP_DIRS': True,
5841 'BACKEND': 'django.template.backends.django.DjangoTemplates',
5842 'DIRS': ['templates/'],
5843 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',
5844 'django.template.context_processors.request',
5845 'django.contrib.auth.context_processors.auth',
5846 'django.contrib.messages.context_processors.messages']}}]</code></td>
5847 </tr>
5848
5849 <tr>
5850 <td>TEST_MODE</td>
5851 <td><code>False</code></td>
5852 </tr>
5853
5854 <tr>
5855 <td>TEST_NON_SERIALIZED_APPS</td>
5856 <td><code>[]</code></td>
5857 </tr>
5858
5859 <tr>
5860 <td>TEST_RUNNER</td>
5861 <td><code>'backlink.tests.runner.LinkGraphTestRunner'</code></td>
5862 </tr>
5863
5864 <tr>
5865 <td>THIRD_PARTY_APPS</td>
5866 <td><code>['rest_framework',
5867 'rest_framework_api_key',
5868 'django_extensions',
5869 'django_celery_beat',
5870 'django_celery_results',
5871 'django_json_widget',
5872 'django_object_actions',
5873 'drf_yasg']</code></td>
5874 </tr>
5875
5876 <tr>
5877 <td>THOUSAND_SEPARATOR</td>
5878 <td><code>','</code></td>
5879 </tr>
5880
5881 <tr>
5882 <td>TIME_FORMAT</td>
5883 <td><code>'P'</code></td>
5884 </tr>
5885
5886 <tr>
5887 <td>TIME_INPUT_FORMATS</td>
5888 <td><code>['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']</code></td>
5889 </tr>
5890
5891 <tr>
5892 <td>TIME_ZONE</td>
5893 <td><code>'UTC'</code></td>
5894 </tr>
5895
5896 <tr>
5897 <td>TOXICITY_INPUT_BUCKET</td>
5898 <td><code>'backlink-toxicity-automl-tables-staging'</code></td>
5899 </tr>
5900
5901 <tr>
5902 <td>TOXICITY_MODEL_DISPLAY_NAME</td>
5903 <td><code>'backlink_toxicity_20210317080419'</code></td>
5904 </tr>
5905
5906 <tr>
5907 <td>TOXICITY_OUTPUT_BUCKET</td>
5908 <td><code>'backlink-toxicity-predictions'</code></td>
5909 </tr>
5910
5911 <tr>
5912 <td>TOXICITY_PROJECT</td>
5913 <td><code>'backlink-toxicity'</code></td>
5914 </tr>
5915
5916 <tr>
5917 <td>TOXICITY_REGION</td>
5918 <td><code>'us-central1'</code></td>
5919 </tr>
5920
5921 <tr>
5922 <td>TOXICITY_SERVICE_ACCOUNT</td>
5923 <td><code>'vendor/google/credentials/backlink-toxicity-ade825466bb8.json'</code></td>
5924 </tr>
5925
5926 <tr>
5927 <td>USE_I18N</td>
5928 <td><code>True</code></td>
5929 </tr>
5930
5931 <tr>
5932 <td>USE_L10N</td>
5933 <td><code>True</code></td>
5934 </tr>
5935
5936 <tr>
5937 <td>USE_PRODUCTION_DBS</td>
5938 <td><code>1</code></td>
5939 </tr>
5940
5941 <tr>
5942 <td>USE_THOUSAND_SEPARATOR</td>
5943 <td><code>False</code></td>
5944 </tr>
5945
5946 <tr>
5947 <td>USE_TZ</td>
5948 <td><code>True</code></td>
5949 </tr>
5950
5951 <tr>
5952 <td>USE_X_FORWARDED_HOST</td>
5953 <td><code>False</code></td>
5954 </tr>
5955
5956 <tr>
5957 <td>USE_X_FORWARDED_PORT</td>
5958 <td><code>False</code></td>
5959 </tr>
5960
5961 <tr>
5962 <td>WSGI_APPLICATION</td>
5963 <td><code>'app.wsgi.application'</code></td>
5964 </tr>
5965
5966 <tr>
5967 <td>X_FRAME_OPTIONS</td>
5968 <td><code>'DENY'</code></td>
5969 </tr>
5970
5971 <tr>
5972 <td>YEAR_MONTH_FORMAT</td>
5973 <td><code>'F Y'</code></td>
5974 </tr>
5975
5976 </tbody>
5977</table>
5978</div>
5979
5980 </div>
5981 </div>
5982
5983
5984
5985
5986
5987
5988 <div id="HeadersPanel" class="djdt-panelContent djdt-hidden">
5989 <div class="djDebugPanelTitle">
5990 <button type="button" class="djDebugClose">Ã</button>
5991 <h3>Headers</h3>
5992 </div>
5993 <div class="djDebugPanelContent">
5994
5995 <div class="djdt-scroll">
5996
5997<h4>Request headers</h4>
5998
5999<table>
6000 <thead>
6001 <tr>
6002 <th>Key</th>
6003 <th>Value</th>
6004 </tr>
6005 </thead>
6006 <tbody>
6007
6008 <tr>
6009 <td>Accept</td>
6010 <td>*/*</td>
6011 </tr>
6012
6013 <tr>
6014 <td>Accept-Encoding</td>
6015 <td>gzip</td>
6016 </tr>
6017
6018 <tr>
6019 <td>Authorization</td>
6020 <td>Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoic2xpZGluZyIsImV4cCI6MTYxODgzOTEwOSwianRpIjoiNzAwMWQ2MzcyMDU3NGFiYTk1YjU1MzgzNTk1OTllZWYiLCJyZWZyZXNoX2V4cCI6MTYxODgzOTEwOSwidXNlcl9pZCI6MTc1MDMsImN1c3RvbWVyIjp7ImlkIjo0MzksInRlYW1faWRzIjpbMTc5NTEsMTc1OTksMTc1OTgsMTc1MDMsMTczNzcsMTcwMTUsMTY2MTEsMTY1OTYsMTY0MzAsMTI5MTYsNjE0LDIyOCwxXSwiaXNfc3Vic2NyaWJlciI6ZmFsc2V9fQ.YStnE825oNUaSmUrOz0NSWM-nhAGl6ciAb4Ilu7Wy-A</td>
6021 </tr>
6022
6023 <tr>
6024 <td>Cdn-Loop</td>
6025 <td>cloudflare</td>
6026 </tr>
6027
6028 <tr>
6029 <td>Cf-Connecting-Ip</td>
6030 <td>24.135.194.235</td>
6031 </tr>
6032
6033 <tr>
6034 <td>Cf-Ipcountry</td>
6035 <td>RS</td>
6036 </tr>
6037
6038 <tr>
6039 <td>Cf-Ray</td>
6040 <td>6406e12e68794db8-FRA</td>
6041 </tr>
6042
6043 <tr>
6044 <td>Cf-Request-Id</td>
6045 <td>09782b10fe00004db8a525e000000001</td>
6046 </tr>
6047
6048 <tr>
6049 <td>Cf-Visitor</td>
6050 <td>{"scheme":"https"}</td>
6051 </tr>
6052
6053 <tr>
6054 <td>Host</td>
6055 <td>backlink.searchatlas.com</td>
6056 </tr>
6057
6058 <tr>
6059 <td>User-Agent</td>
6060 <td>python-requests/2.25.0</td>
6061 </tr>
6062
6063 <tr>
6064 <td>X-Forwarded-For</td>
6065 <td>24.135.194.235, 10.24.5.1</td>
6066 </tr>
6067
6068 <tr>
6069 <td>X-Forwarded-Host</td>
6070 <td>backlink.searchatlas.com</td>
6071 </tr>
6072
6073 <tr>
6074 <td>X-Forwarded-Port</td>
6075 <td>443</td>
6076 </tr>
6077
6078 <tr>
6079 <td>X-Forwarded-Proto</td>
6080 <td>https</td>
6081 </tr>
6082
6083 <tr>
6084 <td>X-Original-Forwarded-For</td>
6085 <td>24.135.194.235</td>
6086 </tr>
6087
6088 <tr>
6089 <td>X-Real-Ip</td>
6090 <td>24.135.194.235</td>
6091 </tr>
6092
6093 <tr>
6094 <td>X-Request-Id</td>
6095 <td>cc6259e9f2d6506fef2fdee020a6bec3</td>
6096 </tr>
6097
6098 <tr>
6099 <td>X-Scheme</td>
6100 <td>https</td>
6101 </tr>
6102
6103 </tbody>
6104</table>
6105
6106<h4>Response headers</h4>
6107
6108<table>
6109 <thead>
6110 <tr>
6111 <th>Key</th>
6112 <th>Value</th>
6113 </tr>
6114 </thead>
6115 <tbody>
6116
6117 <tr>
6118 <td>Content-Length</td>
6119 <td>178671</td>
6120 </tr>
6121
6122 <tr>
6123 <td>Content-Type</td>
6124 <td>text/html</td>
6125 </tr>
6126
6127 <tr>
6128 <td>Referrer-Policy</td>
6129 <td>same-origin</td>
6130 </tr>
6131
6132 <tr>
6133 <td>Vary</td>
6134 <td>Origin, Cookie</td>
6135 </tr>
6136
6137 <tr>
6138 <td>X-Content-Type-Options</td>
6139 <td>nosniff</td>
6140 </tr>
6141
6142 <tr>
6143 <td>X-Frame-Options</td>
6144 <td>DENY</td>
6145 </tr>
6146
6147 </tbody>
6148</table>
6149
6150<h4>WSGI environ</h4>
6151
6152<p>Since the WSGI environ inherits the environment of the server, only a significant subset is shown below.</p>
6153
6154<table>
6155 <thead>
6156 <tr>
6157 <th>Key</th>
6158 <th>Value</th>
6159 </tr>
6160 </thead>
6161 <tbody>
6162
6163 <tr>
6164 <td>PATH_INFO</td>
6165 <td>/backlink/keyword-difficulty/</td>
6166 </tr>
6167
6168 <tr>
6169 <td>QUERY_STRING</td>
6170 <td>websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com</td>
6171 </tr>
6172
6173 <tr>
6174 <td>REMOTE_ADDR</td>
6175 <td>10.24.5.30</td>
6176 </tr>
6177
6178 <tr>
6179 <td>REQUEST_METHOD</td>
6180 <td>GET</td>
6181 </tr>
6182
6183 <tr>
6184 <td>SCRIPT_NAME</td>
6185 <td></td>
6186 </tr>
6187
6188 <tr>
6189 <td>SERVER_NAME</td>
6190 <td>0.0.0.0</td>
6191 </tr>
6192
6193 <tr>
6194 <td>SERVER_PORT</td>
6195 <td>8000</td>
6196 </tr>
6197
6198 <tr>
6199 <td>SERVER_PROTOCOL</td>
6200 <td>HTTP/1.1</td>
6201 </tr>
6202
6203 <tr>
6204 <td>SERVER_SOFTWARE</td>
6205 <td>gunicorn/20.0.4</td>
6206 </tr>
6207
6208 </tbody>
6209</table>
6210</div>
6211
6212 </div>
6213 </div>
6214
6215
6216
6217
6218
6219
6220 <div id="RequestPanel" class="djdt-panelContent djdt-hidden">
6221 <div class="djDebugPanelTitle">
6222 <button type="button" class="djDebugClose">Ã</button>
6223 <h3>Request</h3>
6224 </div>
6225 <div class="djDebugPanelContent">
6226
6227 <div class="djdt-scroll">
6228
6229<h4>View information</h4>
6230<table>
6231 <thead>
6232 <tr>
6233 <th>View function</th>
6234 <th>Arguments</th>
6235 <th>Keyword arguments</th>
6236 <th>URL name</th>
6237 </tr>
6238 </thead>
6239 <tbody>
6240 <tr>
6241 <td><code>backlink.api.v1.views.KeywordDifficultyAPIView</code></td>
6242 <td><code>()</code></td>
6243 <td><code>{}</code></td>
6244 <td><code>keyword-difficulty</code></td>
6245 </tr>
6246 </tbody>
6247</table>
6248
6249
6250 <h4>No cookies</h4>
6251
6252
6253
6254 <h4>Session data</h4>
6255
6256
6257<table>
6258 <colgroup>
6259 <col class="djdt-width-20">
6260 <col>
6261 </colgroup>
6262 <thead>
6263 <tr>
6264 <th>Variable</th>
6265 <th>Value</th>
6266 </tr>
6267 </thead>
6268 <tbody>
6269
6270 <tr>
6271 <td><code>'jwt_token'</code></td>
6272 <td><code>'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoic2xpZGluZyIsImV4cCI6MTYxODgzOTEwOSwianRpIjoiNzAwMWQ2MzcyMDU3NGFiYTk1YjU1MzgzNTk1OTllZWYiLCJyZWZyZXNoX2V4cCI6MTYxODgzOTEwOSwidXNlcl9pZCI6MTc1MDMsImN1c3RvbWVyIjp7ImlkIjo0MzksInRlYW1faWRzIjpbMTc5NTEsMTc1OTksMTc1OTgsMTc1MDMsMTczNzcsMTcwMTUsMTY2MTEsMTY1OTYsMTY0MzAsMTI5MTYsNjE0LDIyOCwxXSwiaXNfc3Vic2NyaWJlciI6ZmFsc2V9fQ.YStnE825oNUaSmUrOz0NSWM-nhAGl6ciAb4Ilu7Wy-A'</code></td>
6273 </tr>
6274
6275 </tbody>
6276</table>
6277
6278
6279
6280
6281 <h4>GET data</h4>
6282
6283
6284<table>
6285 <colgroup>
6286 <col class="djdt-width-20">
6287 <col>
6288 </colgroup>
6289 <thead>
6290 <tr>
6291 <th>Variable</th>
6292 <th>Value</th>
6293 </tr>
6294 </thead>
6295 <tbody>
6296
6297 <tr>
6298 <td><code>'websites'</code></td>
6299 <td><code>'apple.com'</code></td>
6300 </tr>
6301
6302 </tbody>
6303</table>
6304
6305
6306
6307
6308 <h4>No POST data</h4>
6309
6310</div>
6311
6312 </div>
6313 </div>
6314
6315
6316
6317
6318
6319
6320 <div id="SQLPanel" class="djdt-panelContent djdt-hidden">
6321 <div class="djDebugPanelTitle">
6322 <button type="button" class="djDebugClose">Ã</button>
6323 <h3>SQL queries from 1 connection</h3>
6324 </div>
6325 <div class="djDebugPanelContent">
6326
6327 <div class="djdt-scroll">
6328<ul>
6329
6330 <li>
6331 <strong><span class="djdt-color" style="background-color:rgb(256, 0, 0)"></span> default</strong>
6332 3.46 ms (1 query
6333 )
6334 </li>
6335
6336</ul>
6337
6338
6339 <table>
6340 <colgroup>
6341 <col>
6342 <col>
6343 <col>
6344 <col class="djdt-width-30">
6345 <col>
6346 <col>
6347 </colgroup>
6348 <thead>
6349 <tr>
6350 <th></th>
6351 <th colspan="2">Query</th>
6352 <th>Timeline</th>
6353 <th>Time (ms)</th>
6354 <th>Action</th>
6355 </tr>
6356 </thead>
6357 <tbody>
6358
6359 <tr class="" id="sqlMain_1">
6360 <td><span class="djdt-color" style="background-color:rgb(256, 0, 0)"></span></td>
6361 <td class="djdt-toggle">
6362 <button type="button" class="djToggleSwitch" data-toggle-name="sqlMain" data-toggle-id="1">+</button>
6363 </td>
6364 <td>
6365 <div class="djDebugSql"><span class="djDebugCollapsed djdt-hidden"><strong>SELECT</strong> "backlink_user"."id", <br/> "backlink_user"."password", <br/> "backlink_user"."last_login", <br/> "backlink_user"."is_superuser", <br/> "backlink_user"."username", <br/> "backlink_user"."first_name", <br/> "backlink_user"."last_name", <br/> "backlink_user"."email", <br/> "backlink_user"."is_staff", <br/> "backlink_user"."is_active", <br/> "backlink_user"."date_joined", <br/> "backlink_user"."last_login_at", <br/> "backlink_user"."last_ip", <br/> "backlink_user"."login_count", <br/> "backlink_user"."created_at" <strong><br/> FROM</strong> "backlink_user" <strong><br/> WHERE</strong> ("backlink_user"."id" = 17503 <strong>AND</strong> "backlink_user"."username" = '17503') <strong><br/> LIMIT</strong> 21</span><span class="djDebugUncollapsed"><strong>SELECT</strong> ••• <strong>FROM</strong> "backlink_user" <strong>WHERE</strong> ("backlink_user"."id" = 17503 <strong>AND</strong> "backlink_user"."username" = '17503') <strong>LIMIT</strong> 21</span></div>
6366
6367
6368 </td>
6369 <td>
6370 <svg class="djDebugLineChart" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 100 5" preserveAspectRatio="none" aria-label="100.0%">
6371 <rect x="0" y="0" height="5" width="100.0" fill="#800000" />
6372
6373
6374 </svg>
6375 </td>
6376 <td class="djdt-time">
6377 3.46
6378 </td>
6379 <td class="djdt-actions">
6380
6381
6382 <form method="post">
6383 <input type="hidden" name="sql" value="SELECT "backlink_user"."id", "backlink_user"."password", "backlink_user"."last_login", "backlink_user"."is_superuser", "backlink_user"."username", "backlink_user"."first_name", "backlink_user"."last_name", "backlink_user"."email", "backlink_user"."is_staff", "backlink_user"."is_active", "backlink_user"."date_joined", "backlink_user"."last_login_at", "backlink_user"."last_ip", "backlink_user"."login_count", "backlink_user"."created_at" FROM "backlink_user" WHERE ("backlink_user"."id" = 17503 AND "backlink_user"."username" = '17503') LIMIT 21"><input type="hidden" name="raw_sql" value="SELECT "backlink_user"."id", "backlink_user"."password", "backlink_user"."last_login", "backlink_user"."is_superuser", "backlink_user"."username", "backlink_user"."first_name", "backlink_user"."last_name", "backlink_user"."email", "backlink_user"."is_staff", "backlink_user"."is_active", "backlink_user"."date_joined", "backlink_user"."last_login_at", "backlink_user"."last_ip", "backlink_user"."login_count", "backlink_user"."created_at" FROM "backlink_user" WHERE ("backlink_user"."id" = %s AND "backlink_user"."username" = %s) LIMIT 21"><input type="hidden" name="params" value="[17503, "17503"]"><input type="hidden" name="alias" value="default"><input type="hidden" name="duration" value="3.4613609313964844"><input type="hidden" name="hash" value="896e1da85ca8701b6577718d031f736d99a35667">
6384 <button formaction="/__debug__/sql_select/" class="remoteCall">Sel</button>
6385 <button formaction="/__debug__/sql_explain/" class="remoteCall">Expl</button>
6386
6387 </form>
6388
6389
6390 </td>
6391 </tr>
6392 <tr class="djUnselected djToggleDetails_1" id="sqlDetails_1">
6393 <td colspan="2"></td>
6394 <td colspan="4">
6395 <div class="djSQLDetailsDiv">
6396 <p><strong>Connection:</strong> default</p>
6397
6398
6399
6400 <pre class="djdt-stack"><span class="djdt-path">/usr/local/bin/</span><span class="djdt-file">gunicorn</span> in <span class="djdt-func"><module></span>(<span class="djdt-lineno">8</span>)
6401 <span class="djdt-code">sys.exit(run())</span>
6402
6403<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/app/</span><span class="djdt-file">wsgiapp.py</span> in <span class="djdt-func">run</span>(<span class="djdt-lineno">58</span>)
6404 <span class="djdt-code">WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()</span>
6405
6406<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/app/</span><span class="djdt-file">base.py</span> in <span class="djdt-func">run</span>(<span class="djdt-lineno">228</span>)
6407 <span class="djdt-code">super().run()</span>
6408
6409<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/app/</span><span class="djdt-file">base.py</span> in <span class="djdt-func">run</span>(<span class="djdt-lineno">72</span>)
6410 <span class="djdt-code">Arbiter(self).run()</span>
6411
6412<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/</span><span class="djdt-file">arbiter.py</span> in <span class="djdt-func">run</span>(<span class="djdt-lineno">202</span>)
6413 <span class="djdt-code">self.manage_workers()</span>
6414
6415<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/</span><span class="djdt-file">arbiter.py</span> in <span class="djdt-func">manage_workers</span>(<span class="djdt-lineno">545</span>)
6416 <span class="djdt-code">self.spawn_workers()</span>
6417
6418<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/</span><span class="djdt-file">arbiter.py</span> in <span class="djdt-func">spawn_workers</span>(<span class="djdt-lineno">616</span>)
6419 <span class="djdt-code">self.spawn_worker()</span>
6420
6421<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/</span><span class="djdt-file">arbiter.py</span> in <span class="djdt-func">spawn_worker</span>(<span class="djdt-lineno">583</span>)
6422 <span class="djdt-code">worker.init_process()</span>
6423
6424<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/workers/</span><span class="djdt-file">base.py</span> in <span class="djdt-func">init_process</span>(<span class="djdt-lineno">140</span>)
6425 <span class="djdt-code">self.run()</span>
6426
6427<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/workers/</span><span class="djdt-file">sync.py</span> in <span class="djdt-func">run</span>(<span class="djdt-lineno">123</span>)
6428 <span class="djdt-code">self.run_for_one(timeout)</span>
6429
6430<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/workers/</span><span class="djdt-file">sync.py</span> in <span class="djdt-func">run_for_one</span>(<span class="djdt-lineno">67</span>)
6431 <span class="djdt-code">self.accept(listener)</span>
6432
6433<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/workers/</span><span class="djdt-file">sync.py</span> in <span class="djdt-func">accept</span>(<span class="djdt-lineno">29</span>)
6434 <span class="djdt-code">self.handle(listener, client, addr)</span>
6435
6436<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/workers/</span><span class="djdt-file">sync.py</span> in <span class="djdt-func">handle</span>(<span class="djdt-lineno">134</span>)
6437 <span class="djdt-code">self.handle_request(listener, req, client, addr)</span>
6438
6439<span class="djdt-path">/usr/local/lib/python3.8/site-packages/gunicorn/workers/</span><span class="djdt-file">sync.py</span> in <span class="djdt-func">handle_request</span>(<span class="djdt-lineno">175</span>)
6440 <span class="djdt-code">respiter = self.wsgi(environ, resp.start_response)</span>
6441
6442<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">__init__.py</span> in <span class="djdt-func">sentry_patched_wsgi_handler</span>(<span class="djdt-lineno">118</span>)
6443 <span class="djdt-code">return SentryWsgiMiddleware(bound_old_app)(environ, start_response)</span>
6444
6445<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/</span><span class="djdt-file">wsgi.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">122</span>)
6446 <span class="djdt-code">rv = self.app(</span>
6447
6448<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">__init__.py</span> in <span class="djdt-func">sentry_patched_get_response</span>(<span class="djdt-lineno">152</span>)
6449 <span class="djdt-code">return old_get_response(self, request)</span>
6450
6451<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6452 <span class="djdt-code">return f(*args, **kwargs)</span>
6453
6454<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6455 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6456
6457<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6458 <span class="djdt-code">return f(*args, **kwargs)</span>
6459
6460<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6461 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6462
6463<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6464 <span class="djdt-code">return f(*args, **kwargs)</span>
6465
6466<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6467 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6468
6469<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6470 <span class="djdt-code">return f(*args, **kwargs)</span>
6471
6472<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6473 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6474
6475<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6476 <span class="djdt-code">return f(*args, **kwargs)</span>
6477
6478<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6479 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6480
6481<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6482 <span class="djdt-code">return f(*args, **kwargs)</span>
6483
6484<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6485 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6486
6487<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6488 <span class="djdt-code">return f(*args, **kwargs)</span>
6489
6490<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6491 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6492
6493<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6494 <span class="djdt-code">return f(*args, **kwargs)</span>
6495
6496<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6497 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6498
6499<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">__call__</span>(<span class="djdt-lineno">129</span>)
6500 <span class="djdt-code">return f(*args, **kwargs)</span>
6501
6502<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">middleware.py</span> in <span class="djdt-func">sentry_wrapped_method</span>(<span class="djdt-lineno">90</span>)
6503 <span class="djdt-code">return old_method(*args, **kwargs)</span>
6504
6505<span class="djdt-path">/usr/local/lib/python3.8/site-packages/django/views/decorators/</span><span class="djdt-file">csrf.py</span> in <span class="djdt-func">wrapped_view</span>(<span class="djdt-lineno">54</span>)
6506 <span class="djdt-code">return view_func(*args, **kwargs)</span>
6507
6508<span class="djdt-path">/usr/local/lib/python3.8/site-packages/django/views/generic/</span><span class="djdt-file">base.py</span> in <span class="djdt-func">view</span>(<span class="djdt-lineno">70</span>)
6509 <span class="djdt-code">return self.dispatch(request, *args, **kwargs)</span>
6510
6511<span class="djdt-path">/usr/local/lib/python3.8/site-packages/rest_framework/</span><span class="djdt-file">views.py</span> in <span class="djdt-func">dispatch</span>(<span class="djdt-lineno">497</span>)
6512 <span class="djdt-code">self.initial(request, *args, **kwargs)</span>
6513
6514<span class="djdt-path">/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/django/</span><span class="djdt-file">__init__.py</span> in <span class="djdt-func">sentry_patched_drf_initial</span>(<span class="djdt-lineno">287</span>)
6515 <span class="djdt-code">return old_drf_initial(self, request, *args, **kwargs)</span>
6516
6517<span class="djdt-path">/usr/local/lib/python3.8/site-packages/rest_framework/</span><span class="djdt-file">views.py</span> in <span class="djdt-func">initial</span>(<span class="djdt-lineno">414</span>)
6518 <span class="djdt-code">self.perform_authentication(request)</span>
6519
6520<span class="djdt-path">/usr/local/lib/python3.8/site-packages/rest_framework/</span><span class="djdt-file">views.py</span> in <span class="djdt-func">perform_authentication</span>(<span class="djdt-lineno">324</span>)
6521 <span class="djdt-code">request.user</span>
6522
6523<span class="djdt-path">/usr/local/lib/python3.8/site-packages/rest_framework/</span><span class="djdt-file">request.py</span> in <span class="djdt-func">user</span>(<span class="djdt-lineno">227</span>)
6524 <span class="djdt-code">self._authenticate()</span>
6525
6526<span class="djdt-path">/usr/local/lib/python3.8/site-packages/rest_framework/</span><span class="djdt-file">request.py</span> in <span class="djdt-func">_authenticate</span>(<span class="djdt-lineno">380</span>)
6527 <span class="djdt-code">user_auth_tuple = authenticator.authenticate(self)</span>
6528
6529<span class="djdt-path">/usr/src/app/backlink/</span><span class="djdt-file">auth.py</span> in <span class="djdt-func">authenticate</span>(<span class="djdt-lineno">49</span>)
6530 <span class="djdt-code">return self.get_user(validated_token), validated_token</span>
6531
6532<span class="djdt-path">/usr/src/app/backlink/</span><span class="djdt-file">auth.py</span> in <span class="djdt-func">get_user</span>(<span class="djdt-lineno">103</span>)
6533 <span class="djdt-code">external_user, was_created = User.objects.get_or_create_for_user_id(user_id)</span>
6534
6535<span class="djdt-path">/usr/src/app/backlink/</span><span class="djdt-file">models.py</span> in <span class="djdt-func">get_or_create_for_user_id</span>(<span class="djdt-lineno">499</span>)
6536 <span class="djdt-code">return self.get_or_create(</span>
6537
6538
6539</pre>
6540
6541
6542 </div>
6543 </td>
6544 </tr>
6545
6546 </tbody>
6547 </table>
6548
6549</div>
6550
6551 </div>
6552 </div>
6553
6554
6555
6556
6557
6558
6559 <div id="StaticFilesPanel" class="djdt-panelContent djdt-hidden">
6560 <div class="djDebugPanelTitle">
6561 <button type="button" class="djDebugClose">Ã</button>
6562 <h3>Static files (198 found, 0 used)</h3>
6563 </div>
6564 <div class="djDebugPanelContent">
6565
6566 <div class="djdt-scroll">
6567
6568<h4>Static file path</h4>
6569
6570 <ol>
6571
6572 <li>/usr/src/app/static</li>
6573
6574 </ol>
6575
6576
6577<h4>Static file apps</h4>
6578
6579 <ol>
6580
6581 <li>django.contrib.admin</li>
6582
6583 <li>rest_framework</li>
6584
6585 <li>django_extensions</li>
6586
6587 <li>django_json_widget</li>
6588
6589 <li>drf_yasg</li>
6590
6591 <li>debug_toolbar</li>
6592
6593 </ol>
6594
6595
6596<h4>Static files</h4>
6597
6598 <p>None</p>
6599
6600
6601
6602
6603 <h4>django.contrib.staticfiles.finders.AppDirectoriesFinder (198 files)</h4>
6604 <table>
6605 <thead>
6606 <tr>
6607 <th>Path</th>
6608 <th>Location</th>
6609 </tr>
6610 </thead>
6611 <tbody>
6612
6613 <tr>
6614 <td>admin/js/change_form.js</td>
6615 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/change_form.js</td>
6616 </tr>
6617
6618 <tr>
6619 <td>admin/js/SelectFilter2.js</td>
6620 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js</td>
6621 </tr>
6622
6623 <tr>
6624 <td>admin/js/calendar.js</td>
6625 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/calendar.js</td>
6626 </tr>
6627
6628 <tr>
6629 <td>admin/js/core.js</td>
6630 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/core.js</td>
6631 </tr>
6632
6633 <tr>
6634 <td>admin/js/prepopulate.js</td>
6635 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/prepopulate.js</td>
6636 </tr>
6637
6638 <tr>
6639 <td>admin/js/urlify.js</td>
6640 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/urlify.js</td>
6641 </tr>
6642
6643 <tr>
6644 <td>admin/js/nav_sidebar.js</td>
6645 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/nav_sidebar.js</td>
6646 </tr>
6647
6648 <tr>
6649 <td>admin/js/prepopulate_init.js</td>
6650 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/prepopulate_init.js</td>
6651 </tr>
6652
6653 <tr>
6654 <td>admin/js/actions.js</td>
6655 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/actions.js</td>
6656 </tr>
6657
6658 <tr>
6659 <td>admin/js/inlines.js</td>
6660 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/inlines.js</td>
6661 </tr>
6662
6663 <tr>
6664 <td>admin/js/popup_response.js</td>
6665 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/popup_response.js</td>
6666 </tr>
6667
6668 <tr>
6669 <td>admin/js/SelectBox.js</td>
6670 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/SelectBox.js</td>
6671 </tr>
6672
6673 <tr>
6674 <td>admin/js/jquery.init.js</td>
6675 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/jquery.init.js</td>
6676 </tr>
6677
6678 <tr>
6679 <td>admin/js/collapse.js</td>
6680 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/collapse.js</td>
6681 </tr>
6682
6683 <tr>
6684 <td>admin/js/cancel.js</td>
6685 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/cancel.js</td>
6686 </tr>
6687
6688 <tr>
6689 <td>admin/js/autocomplete.js</td>
6690 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/autocomplete.js</td>
6691 </tr>
6692
6693 <tr>
6694 <td>admin/js/admin/RelatedObjectLookups.js</td>
6695 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js</td>
6696 </tr>
6697
6698 <tr>
6699 <td>admin/js/admin/DateTimeShortcuts.js</td>
6700 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js</td>
6701 </tr>
6702
6703 <tr>
6704 <td>admin/js/vendor/select2/select2.full.js</td>
6705 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.js</td>
6706 </tr>
6707
6708 <tr>
6709 <td>admin/js/vendor/select2/select2.full.min.js</td>
6710 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js</td>
6711 </tr>
6712
6713 <tr>
6714 <td>admin/js/vendor/select2/LICENSE.md</td>
6715 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/LICENSE.md</td>
6716 </tr>
6717
6718 <tr>
6719 <td>admin/js/vendor/select2/i18n/nl.js</td>
6720 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js</td>
6721 </tr>
6722
6723 <tr>
6724 <td>admin/js/vendor/select2/i18n/bs.js</td>
6725 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bs.js</td>
6726 </tr>
6727
6728 <tr>
6729 <td>admin/js/vendor/select2/i18n/ms.js</td>
6730 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js</td>
6731 </tr>
6732
6733 <tr>
6734 <td>admin/js/vendor/select2/i18n/is.js</td>
6735 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js</td>
6736 </tr>
6737
6738 <tr>
6739 <td>admin/js/vendor/select2/i18n/ja.js</td>
6740 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js</td>
6741 </tr>
6742
6743 <tr>
6744 <td>admin/js/vendor/select2/i18n/af.js</td>
6745 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/af.js</td>
6746 </tr>
6747
6748 <tr>
6749 <td>admin/js/vendor/select2/i18n/nb.js</td>
6750 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js</td>
6751 </tr>
6752
6753 <tr>
6754 <td>admin/js/vendor/select2/i18n/el.js</td>
6755 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js</td>
6756 </tr>
6757
6758 <tr>
6759 <td>admin/js/vendor/select2/i18n/en.js</td>
6760 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js</td>
6761 </tr>
6762
6763 <tr>
6764 <td>admin/js/vendor/select2/i18n/uk.js</td>
6765 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js</td>
6766 </tr>
6767
6768 <tr>
6769 <td>admin/js/vendor/select2/i18n/sr.js</td>
6770 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js</td>
6771 </tr>
6772
6773 <tr>
6774 <td>admin/js/vendor/select2/i18n/es.js</td>
6775 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js</td>
6776 </tr>
6777
6778 <tr>
6779 <td>admin/js/vendor/select2/i18n/ar.js</td>
6780 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js</td>
6781 </tr>
6782
6783 <tr>
6784 <td>admin/js/vendor/select2/i18n/th.js</td>
6785 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js</td>
6786 </tr>
6787
6788 <tr>
6789 <td>admin/js/vendor/select2/i18n/sl.js</td>
6790 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sl.js</td>
6791 </tr>
6792
6793 <tr>
6794 <td>admin/js/vendor/select2/i18n/ca.js</td>
6795 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js</td>
6796 </tr>
6797
6798 <tr>
6799 <td>admin/js/vendor/select2/i18n/tr.js</td>
6800 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js</td>
6801 </tr>
6802
6803 <tr>
6804 <td>admin/js/vendor/select2/i18n/de.js</td>
6805 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js</td>
6806 </tr>
6807
6808 <tr>
6809 <td>admin/js/vendor/select2/i18n/sk.js</td>
6810 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js</td>
6811 </tr>
6812
6813 <tr>
6814 <td>admin/js/vendor/select2/i18n/fa.js</td>
6815 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js</td>
6816 </tr>
6817
6818 <tr>
6819 <td>admin/js/vendor/select2/i18n/zh-CN.js</td>
6820 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js</td>
6821 </tr>
6822
6823 <tr>
6824 <td>admin/js/vendor/select2/i18n/eu.js</td>
6825 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js</td>
6826 </tr>
6827
6828 <tr>
6829 <td>admin/js/vendor/select2/i18n/et.js</td>
6830 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js</td>
6831 </tr>
6832
6833 <tr>
6834 <td>admin/js/vendor/select2/i18n/pl.js</td>
6835 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js</td>
6836 </tr>
6837
6838 <tr>
6839 <td>admin/js/vendor/select2/i18n/az.js</td>
6840 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js</td>
6841 </tr>
6842
6843 <tr>
6844 <td>admin/js/vendor/select2/i18n/gl.js</td>
6845 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js</td>
6846 </tr>
6847
6848 <tr>
6849 <td>admin/js/vendor/select2/i18n/ro.js</td>
6850 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js</td>
6851 </tr>
6852
6853 <tr>
6854 <td>admin/js/vendor/select2/i18n/pt.js</td>
6855 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js</td>
6856 </tr>
6857
6858 <tr>
6859 <td>admin/js/vendor/select2/i18n/hu.js</td>
6860 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js</td>
6861 </tr>
6862
6863 <tr>
6864 <td>admin/js/vendor/select2/i18n/cs.js</td>
6865 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js</td>
6866 </tr>
6867
6868 <tr>
6869 <td>admin/js/vendor/select2/i18n/ka.js</td>
6870 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ka.js</td>
6871 </tr>
6872
6873 <tr>
6874 <td>admin/js/vendor/select2/i18n/hy.js</td>
6875 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hy.js</td>
6876 </tr>
6877
6878 <tr>
6879 <td>admin/js/vendor/select2/i18n/id.js</td>
6880 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js</td>
6881 </tr>
6882
6883 <tr>
6884 <td>admin/js/vendor/select2/i18n/tk.js</td>
6885 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tk.js</td>
6886 </tr>
6887
6888 <tr>
6889 <td>admin/js/vendor/select2/i18n/it.js</td>
6890 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js</td>
6891 </tr>
6892
6893 <tr>
6894 <td>admin/js/vendor/select2/i18n/km.js</td>
6895 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js</td>
6896 </tr>
6897
6898 <tr>
6899 <td>admin/js/vendor/select2/i18n/ko.js</td>
6900 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js</td>
6901 </tr>
6902
6903 <tr>
6904 <td>admin/js/vendor/select2/i18n/da.js</td>
6905 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js</td>
6906 </tr>
6907
6908 <tr>
6909 <td>admin/js/vendor/select2/i18n/ps.js</td>
6910 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ps.js</td>
6911 </tr>
6912
6913 <tr>
6914 <td>admin/js/vendor/select2/i18n/mk.js</td>
6915 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js</td>
6916 </tr>
6917
6918 <tr>
6919 <td>admin/js/vendor/select2/i18n/hr.js</td>
6920 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js</td>
6921 </tr>
6922
6923 <tr>
6924 <td>admin/js/vendor/select2/i18n/sr-Cyrl.js</td>
6925 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js</td>
6926 </tr>
6927
6928 <tr>
6929 <td>admin/js/vendor/select2/i18n/sv.js</td>
6930 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js</td>
6931 </tr>
6932
6933 <tr>
6934 <td>admin/js/vendor/select2/i18n/sq.js</td>
6935 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sq.js</td>
6936 </tr>
6937
6938 <tr>
6939 <td>admin/js/vendor/select2/i18n/hi.js</td>
6940 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js</td>
6941 </tr>
6942
6943 <tr>
6944 <td>admin/js/vendor/select2/i18n/dsb.js</td>
6945 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/dsb.js</td>
6946 </tr>
6947
6948 <tr>
6949 <td>admin/js/vendor/select2/i18n/lt.js</td>
6950 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js</td>
6951 </tr>
6952
6953 <tr>
6954 <td>admin/js/vendor/select2/i18n/fr.js</td>
6955 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js</td>
6956 </tr>
6957
6958 <tr>
6959 <td>admin/js/vendor/select2/i18n/he.js</td>
6960 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js</td>
6961 </tr>
6962
6963 <tr>
6964 <td>admin/js/vendor/select2/i18n/hsb.js</td>
6965 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hsb.js</td>
6966 </tr>
6967
6968 <tr>
6969 <td>admin/js/vendor/select2/i18n/vi.js</td>
6970 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js</td>
6971 </tr>
6972
6973 <tr>
6974 <td>admin/js/vendor/select2/i18n/bn.js</td>
6975 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bn.js</td>
6976 </tr>
6977
6978 <tr>
6979 <td>admin/js/vendor/select2/i18n/fi.js</td>
6980 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js</td>
6981 </tr>
6982
6983 <tr>
6984 <td>admin/js/vendor/select2/i18n/ru.js</td>
6985 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js</td>
6986 </tr>
6987
6988 <tr>
6989 <td>admin/js/vendor/select2/i18n/lv.js</td>
6990 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js</td>
6991 </tr>
6992
6993 <tr>
6994 <td>admin/js/vendor/select2/i18n/bg.js</td>
6995 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js</td>
6996 </tr>
6997
6998 <tr>
6999 <td>admin/js/vendor/select2/i18n/ne.js</td>
7000 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ne.js</td>
7001 </tr>
7002
7003 <tr>
7004 <td>admin/js/vendor/select2/i18n/pt-BR.js</td>
7005 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js</td>
7006 </tr>
7007
7008 <tr>
7009 <td>admin/js/vendor/select2/i18n/zh-TW.js</td>
7010 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js</td>
7011 </tr>
7012
7013 <tr>
7014 <td>admin/js/vendor/xregexp/xregexp.min.js</td>
7015 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js</td>
7016 </tr>
7017
7018 <tr>
7019 <td>admin/js/vendor/xregexp/xregexp.js</td>
7020 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js</td>
7021 </tr>
7022
7023 <tr>
7024 <td>admin/js/vendor/xregexp/LICENSE.txt</td>
7025 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE.txt</td>
7026 </tr>
7027
7028 <tr>
7029 <td>admin/js/vendor/jquery/jquery.js</td>
7030 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js</td>
7031 </tr>
7032
7033 <tr>
7034 <td>admin/js/vendor/jquery/LICENSE.txt</td>
7035 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/LICENSE.txt</td>
7036 </tr>
7037
7038 <tr>
7039 <td>admin/js/vendor/jquery/jquery.min.js</td>
7040 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js</td>
7041 </tr>
7042
7043 <tr>
7044 <td>admin/fonts/Roboto-Bold-webfont.woff</td>
7045 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff</td>
7046 </tr>
7047
7048 <tr>
7049 <td>admin/fonts/README.txt</td>
7050 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/fonts/README.txt</td>
7051 </tr>
7052
7053 <tr>
7054 <td>admin/fonts/Roboto-Regular-webfont.woff</td>
7055 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff</td>
7056 </tr>
7057
7058 <tr>
7059 <td>admin/fonts/Roboto-Light-webfont.woff</td>
7060 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff</td>
7061 </tr>
7062
7063 <tr>
7064 <td>admin/fonts/LICENSE.txt</td>
7065 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt</td>
7066 </tr>
7067
7068 <tr>
7069 <td>admin/css/responsive_rtl.css</td>
7070 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/responsive_rtl.css</td>
7071 </tr>
7072
7073 <tr>
7074 <td>admin/css/nav_sidebar.css</td>
7075 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/nav_sidebar.css</td>
7076 </tr>
7077
7078 <tr>
7079 <td>admin/css/fonts.css</td>
7080 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/fonts.css</td>
7081 </tr>
7082
7083 <tr>
7084 <td>admin/css/login.css</td>
7085 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/login.css</td>
7086 </tr>
7087
7088 <tr>
7089 <td>admin/css/changelists.css</td>
7090 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/changelists.css</td>
7091 </tr>
7092
7093 <tr>
7094 <td>admin/css/forms.css</td>
7095 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/forms.css</td>
7096 </tr>
7097
7098 <tr>
7099 <td>admin/css/dashboard.css</td>
7100 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/dashboard.css</td>
7101 </tr>
7102
7103 <tr>
7104 <td>admin/css/rtl.css</td>
7105 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/rtl.css</td>
7106 </tr>
7107
7108 <tr>
7109 <td>admin/css/autocomplete.css</td>
7110 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/autocomplete.css</td>
7111 </tr>
7112
7113 <tr>
7114 <td>admin/css/widgets.css</td>
7115 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/widgets.css</td>
7116 </tr>
7117
7118 <tr>
7119 <td>admin/css/base.css</td>
7120 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/base.css</td>
7121 </tr>
7122
7123 <tr>
7124 <td>admin/css/responsive.css</td>
7125 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/responsive.css</td>
7126 </tr>
7127
7128 <tr>
7129 <td>admin/css/vendor/select2/LICENSE-SELECT2.md</td>
7130 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md</td>
7131 </tr>
7132
7133 <tr>
7134 <td>admin/css/vendor/select2/select2.min.css</td>
7135 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.min.css</td>
7136 </tr>
7137
7138 <tr>
7139 <td>admin/css/vendor/select2/select2.css</td>
7140 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.css</td>
7141 </tr>
7142
7143 <tr>
7144 <td>admin/img/LICENSE</td>
7145 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/LICENSE</td>
7146 </tr>
7147
7148 <tr>
7149 <td>admin/img/icon-unknown-alt.svg</td>
7150 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-unknown-alt.svg</td>
7151 </tr>
7152
7153 <tr>
7154 <td>admin/img/calendar-icons.svg</td>
7155 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/calendar-icons.svg</td>
7156 </tr>
7157
7158 <tr>
7159 <td>admin/img/search.svg</td>
7160 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/search.svg</td>
7161 </tr>
7162
7163 <tr>
7164 <td>admin/img/tooltag-arrowright.svg</td>
7165 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.svg</td>
7166 </tr>
7167
7168 <tr>
7169 <td>admin/img/inline-delete.svg</td>
7170 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/inline-delete.svg</td>
7171 </tr>
7172
7173 <tr>
7174 <td>admin/img/README.txt</td>
7175 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/README.txt</td>
7176 </tr>
7177
7178 <tr>
7179 <td>admin/img/sorting-icons.svg</td>
7180 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/sorting-icons.svg</td>
7181 </tr>
7182
7183 <tr>
7184 <td>admin/img/icon-alert.svg</td>
7185 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-alert.svg</td>
7186 </tr>
7187
7188 <tr>
7189 <td>admin/img/icon-deletelink.svg</td>
7190 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-deletelink.svg</td>
7191 </tr>
7192
7193 <tr>
7194 <td>admin/img/icon-clock.svg</td>
7195 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-clock.svg</td>
7196 </tr>
7197
7198 <tr>
7199 <td>admin/img/icon-addlink.svg</td>
7200 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-addlink.svg</td>
7201 </tr>
7202
7203 <tr>
7204 <td>admin/img/selector-icons.svg</td>
7205 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/selector-icons.svg</td>
7206 </tr>
7207
7208 <tr>
7209 <td>admin/img/icon-unknown.svg</td>
7210 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-unknown.svg</td>
7211 </tr>
7212
7213 <tr>
7214 <td>admin/img/icon-viewlink.svg</td>
7215 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg</td>
7216 </tr>
7217
7218 <tr>
7219 <td>admin/img/icon-changelink.svg</td>
7220 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-changelink.svg</td>
7221 </tr>
7222
7223 <tr>
7224 <td>admin/img/tooltag-add.svg</td>
7225 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/tooltag-add.svg</td>
7226 </tr>
7227
7228 <tr>
7229 <td>admin/img/icon-no.svg</td>
7230 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-no.svg</td>
7231 </tr>
7232
7233 <tr>
7234 <td>admin/img/icon-calendar.svg</td>
7235 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-calendar.svg</td>
7236 </tr>
7237
7238 <tr>
7239 <td>admin/img/icon-yes.svg</td>
7240 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/icon-yes.svg</td>
7241 </tr>
7242
7243 <tr>
7244 <td>admin/img/gis/move_vertex_off.svg</td>
7245 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg</td>
7246 </tr>
7247
7248 <tr>
7249 <td>admin/img/gis/move_vertex_on.svg</td>
7250 <td>/usr/local/lib/python3.8/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.svg</td>
7251 </tr>
7252
7253 <tr>
7254 <td>rest_framework/js/csrf.js</td>
7255 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/csrf.js</td>
7256 </tr>
7257
7258 <tr>
7259 <td>rest_framework/js/default.js</td>
7260 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/default.js</td>
7261 </tr>
7262
7263 <tr>
7264 <td>rest_framework/js/bootstrap.min.js</td>
7265 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/bootstrap.min.js</td>
7266 </tr>
7267
7268 <tr>
7269 <td>rest_framework/js/ajax-form.js</td>
7270 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/ajax-form.js</td>
7271 </tr>
7272
7273 <tr>
7274 <td>rest_framework/js/coreapi-0.1.1.js</td>
7275 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/coreapi-0.1.1.js</td>
7276 </tr>
7277
7278 <tr>
7279 <td>rest_framework/js/jquery-3.5.1.min.js</td>
7280 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/jquery-3.5.1.min.js</td>
7281 </tr>
7282
7283 <tr>
7284 <td>rest_framework/js/prettify-min.js</td>
7285 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/js/prettify-min.js</td>
7286 </tr>
7287
7288 <tr>
7289 <td>rest_framework/docs/js/api.js</td>
7290 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/js/api.js</td>
7291 </tr>
7292
7293 <tr>
7294 <td>rest_framework/docs/js/jquery.json-view.min.js</td>
7295 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/js/jquery.json-view.min.js</td>
7296 </tr>
7297
7298 <tr>
7299 <td>rest_framework/docs/js/highlight.pack.js</td>
7300 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/js/highlight.pack.js</td>
7301 </tr>
7302
7303 <tr>
7304 <td>rest_framework/docs/css/highlight.css</td>
7305 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/css/highlight.css</td>
7306 </tr>
7307
7308 <tr>
7309 <td>rest_framework/docs/css/jquery.json-view.min.css</td>
7310 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/css/jquery.json-view.min.css</td>
7311 </tr>
7312
7313 <tr>
7314 <td>rest_framework/docs/css/base.css</td>
7315 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/css/base.css</td>
7316 </tr>
7317
7318 <tr>
7319 <td>rest_framework/docs/img/favicon.ico</td>
7320 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/img/favicon.ico</td>
7321 </tr>
7322
7323 <tr>
7324 <td>rest_framework/docs/img/grid.png</td>
7325 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/docs/img/grid.png</td>
7326 </tr>
7327
7328 <tr>
7329 <td>rest_framework/fonts/fontawesome-webfont.ttf</td>
7330 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.ttf</td>
7331 </tr>
7332
7333 <tr>
7334 <td>rest_framework/fonts/fontawesome-webfont.woff</td>
7335 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.woff</td>
7336 </tr>
7337
7338 <tr>
7339 <td>rest_framework/fonts/fontawesome-webfont.eot</td>
7340 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.eot</td>
7341 </tr>
7342
7343 <tr>
7344 <td>rest_framework/fonts/glyphicons-halflings-regular.woff</td>
7345 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.woff</td>
7346 </tr>
7347
7348 <tr>
7349 <td>rest_framework/fonts/fontawesome-webfont.svg</td>
7350 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/fontawesome-webfont.svg</td>
7351 </tr>
7352
7353 <tr>
7354 <td>rest_framework/fonts/glyphicons-halflings-regular.eot</td>
7355 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.eot</td>
7356 </tr>
7357
7358 <tr>
7359 <td>rest_framework/fonts/glyphicons-halflings-regular.svg</td>
7360 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.svg</td>
7361 </tr>
7362
7363 <tr>
7364 <td>rest_framework/fonts/glyphicons-halflings-regular.woff2</td>
7365 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.woff2</td>
7366 </tr>
7367
7368 <tr>
7369 <td>rest_framework/fonts/glyphicons-halflings-regular.ttf</td>
7370 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/fonts/glyphicons-halflings-regular.ttf</td>
7371 </tr>
7372
7373 <tr>
7374 <td>rest_framework/css/bootstrap.min.css</td>
7375 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/css/bootstrap.min.css</td>
7376 </tr>
7377
7378 <tr>
7379 <td>rest_framework/css/default.css</td>
7380 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/css/default.css</td>
7381 </tr>
7382
7383 <tr>
7384 <td>rest_framework/css/bootstrap-tweaks.css</td>
7385 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/css/bootstrap-tweaks.css</td>
7386 </tr>
7387
7388 <tr>
7389 <td>rest_framework/css/prettify.css</td>
7390 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/css/prettify.css</td>
7391 </tr>
7392
7393 <tr>
7394 <td>rest_framework/css/font-awesome-4.0.3.css</td>
7395 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/css/font-awesome-4.0.3.css</td>
7396 </tr>
7397
7398 <tr>
7399 <td>rest_framework/css/bootstrap-theme.min.css</td>
7400 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/css/bootstrap-theme.min.css</td>
7401 </tr>
7402
7403 <tr>
7404 <td>rest_framework/img/glyphicons-halflings-white.png</td>
7405 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/img/glyphicons-halflings-white.png</td>
7406 </tr>
7407
7408 <tr>
7409 <td>rest_framework/img/grid.png</td>
7410 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/img/grid.png</td>
7411 </tr>
7412
7413 <tr>
7414 <td>rest_framework/img/glyphicons-halflings.png</td>
7415 <td>/usr/local/lib/python3.8/site-packages/rest_framework/static/rest_framework/img/glyphicons-halflings.png</td>
7416 </tr>
7417
7418 <tr>
7419 <td>django_extensions/js/jquery.ajaxQueue.js</td>
7420 <td>/usr/local/lib/python3.8/site-packages/django_extensions/static/django_extensions/js/jquery.ajaxQueue.js</td>
7421 </tr>
7422
7423 <tr>
7424 <td>django_extensions/js/jquery.bgiframe.js</td>
7425 <td>/usr/local/lib/python3.8/site-packages/django_extensions/static/django_extensions/js/jquery.bgiframe.js</td>
7426 </tr>
7427
7428 <tr>
7429 <td>django_extensions/js/jquery.autocomplete.js</td>
7430 <td>/usr/local/lib/python3.8/site-packages/django_extensions/static/django_extensions/js/jquery.autocomplete.js</td>
7431 </tr>
7432
7433 <tr>
7434 <td>django_extensions/css/jquery.autocomplete.css</td>
7435 <td>/usr/local/lib/python3.8/site-packages/django_extensions/static/django_extensions/css/jquery.autocomplete.css</td>
7436 </tr>
7437
7438 <tr>
7439 <td>django_extensions/img/indicator.gif</td>
7440 <td>/usr/local/lib/python3.8/site-packages/django_extensions/static/django_extensions/img/indicator.gif</td>
7441 </tr>
7442
7443 <tr>
7444 <td>dist/jsoneditor.min.css</td>
7445 <td>/usr/local/lib/python3.8/site-packages/django_json_widget/static/dist/jsoneditor.min.css</td>
7446 </tr>
7447
7448 <tr>
7449 <td>dist/jsoneditor.min.js</td>
7450 <td>/usr/local/lib/python3.8/site-packages/django_json_widget/static/dist/jsoneditor.min.js</td>
7451 </tr>
7452
7453 <tr>
7454 <td>dist/img/jsoneditor-icons.svg</td>
7455 <td>/usr/local/lib/python3.8/site-packages/django_json_widget/static/dist/img/jsoneditor-icons.svg</td>
7456 </tr>
7457
7458 <tr>
7459 <td>css/django_json_widget.css</td>
7460 <td>/usr/local/lib/python3.8/site-packages/django_json_widget/static/css/django_json_widget.css</td>
7461 </tr>
7462
7463 <tr>
7464 <td>drf-yasg/url-polyfill.min.js</td>
7465 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/url-polyfill.min.js</td>
7466 </tr>
7467
7468 <tr>
7469 <td>drf-yasg/insQ.min.js</td>
7470 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/insQ.min.js</td>
7471 </tr>
7472
7473 <tr>
7474 <td>drf-yasg/style.css</td>
7475 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/style.css</td>
7476 </tr>
7477
7478 <tr>
7479 <td>drf-yasg/immutable.min.js</td>
7480 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/immutable.min.js</td>
7481 </tr>
7482
7483 <tr>
7484 <td>drf-yasg/redoc-init.js</td>
7485 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/redoc-init.js</td>
7486 </tr>
7487
7488 <tr>
7489 <td>drf-yasg/swagger-ui-init.js</td>
7490 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-init.js</td>
7491 </tr>
7492
7493 <tr>
7494 <td>drf-yasg/redoc-old/redoc.min.js</td>
7495 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/redoc-old/redoc.min.js</td>
7496 </tr>
7497
7498 <tr>
7499 <td>drf-yasg/redoc/redoc-logo.png</td>
7500 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/redoc/redoc-logo.png</td>
7501 </tr>
7502
7503 <tr>
7504 <td>drf-yasg/redoc/redoc.min.js</td>
7505 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/redoc/redoc.min.js</td>
7506 </tr>
7507
7508 <tr>
7509 <td>drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js</td>
7510 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle.js</td>
7511 </tr>
7512
7513 <tr>
7514 <td>drf-yasg/swagger-ui-dist/index.js</td>
7515 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/index.js</td>
7516 </tr>
7517
7518 <tr>
7519 <td>drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js</td>
7520 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js</td>
7521 </tr>
7522
7523 <tr>
7524 <td>drf-yasg/swagger-ui-dist/swagger-ui-bundle.js</td>
7525 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-bundle.js</td>
7526 </tr>
7527
7528 <tr>
7529 <td>drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js</td>
7530 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-es-bundle-core.js</td>
7531 </tr>
7532
7533 <tr>
7534 <td>drf-yasg/swagger-ui-dist/absolute-path.js</td>
7535 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/absolute-path.js</td>
7536 </tr>
7537
7538 <tr>
7539 <td>drf-yasg/swagger-ui-dist/oauth2-redirect.html</td>
7540 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/oauth2-redirect.html</td>
7541 </tr>
7542
7543 <tr>
7544 <td>drf-yasg/swagger-ui-dist/favicon-32x32.png</td>
7545 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/favicon-32x32.png</td>
7546 </tr>
7547
7548 <tr>
7549 <td>drf-yasg/swagger-ui-dist/swagger-ui.css</td>
7550 <td>/usr/local/lib/python3.8/site-packages/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.css</td>
7551 </tr>
7552
7553 <tr>
7554 <td>debug_toolbar/js/utils.js</td>
7555 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/js/utils.js</td>
7556 </tr>
7557
7558 <tr>
7559 <td>debug_toolbar/js/timer.js</td>
7560 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/js/timer.js</td>
7561 </tr>
7562
7563 <tr>
7564 <td>debug_toolbar/js/toolbar.js</td>
7565 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.js</td>
7566 </tr>
7567
7568 <tr>
7569 <td>debug_toolbar/js/history.js</td>
7570 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/js/history.js</td>
7571 </tr>
7572
7573 <tr>
7574 <td>debug_toolbar/js/redirect.js</td>
7575 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/js/redirect.js</td>
7576 </tr>
7577
7578 <tr>
7579 <td>debug_toolbar/js/toolbar.timer.js</td>
7580 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.timer.js</td>
7581 </tr>
7582
7583 <tr>
7584 <td>debug_toolbar/css/print.css</td>
7585 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/css/print.css</td>
7586 </tr>
7587
7588 <tr>
7589 <td>debug_toolbar/css/toolbar.css</td>
7590 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/css/toolbar.css</td>
7591 </tr>
7592
7593 <tr>
7594 <td>debug_toolbar/img/ajax-loader.gif</td>
7595 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/img/ajax-loader.gif</td>
7596 </tr>
7597
7598 <tr>
7599 <td>debug_toolbar/img/indicator.png</td>
7600 <td>/usr/local/lib/python3.8/site-packages/debug_toolbar/static/debug_toolbar/img/indicator.png</td>
7601 </tr>
7602
7603 </tbody>
7604 </table>
7605
7606</div>
7607
7608 </div>
7609 </div>
7610
7611
7612
7613
7614
7615
7616 <div id="TemplatesPanel" class="djdt-panelContent djdt-hidden">
7617 <div class="djDebugPanelTitle">
7618 <button type="button" class="djDebugClose">Ã</button>
7619 <h3>Templates (1 rendered)</h3>
7620 </div>
7621 <div class="djDebugPanelContent">
7622
7623 <div class="djdt-scroll">
7624<h4>Template paths</h4>
7625
7626 <p>None</p>
7627
7628
7629<h4>Template</h4>
7630
7631 <dl>
7632
7633 <dt><strong><a class="remoteCall toggleTemplate" href="/__debug__/template_source/?template=None&template_origin=Ijx1bmtub3duIHNvdXJjZT4i:1lX5lC:baQCeynWojDuyVXP9VJyfSbVRdhpglskeEmp46c8TRU">None</a></strong></dt>
7634 <dd><samp><unknown source></samp></dd>
7635
7636 <dd>
7637 <details>
7638 <summary>Toggle context</summary>
7639 <code class="djTemplateContext">{'False': False, 'None': None, 'True': True}
7640{'django_version_info': '3.2',
7641 'exception_type': 'RuntimeError',
7642 'exception_value': 'There is no current event loop in thread '
7643 "'ThreadPoolExecutor-0_0'.",
7644 'filtered_POST_items': [],
7645 'frames': [{'context_line': ' response = get_response(request)',
7646 'exc_cause': None,
7647 'exc_cause_explicit': None,
7648 'filename': '/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py',
7649 'function': 'inner',
7650 'id': 140096216598912,
7651 'lineno': 47,
7652 'post_context': [' except Exception as exc:',
7653 ' response = '
7654 'response_for_exception(request, exc)',
7655 ' return response',
7656 ' return inner',
7657 '',
7658 ''],
7659 'pre_context': [' response = await '
7660 'sync_to_async(response_for_exception, '
7661 'thread_sensitive=False)(request, exc)',
7662 ' return response',
7663 ' return inner',
7664 ' else:',
7665 ' @wraps(get_response)',
7666 ' def inner(request):',
7667 ' try:'],
7668 'pre_context_lineno': 40,
7669 'tb': <traceback object at 0x7f6ab1398980>,
7670 'type': 'django',
7671 'vars': [('request',
7672 '<WSGIRequest: GET '
7673 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
7674 ('exc',
7675 'RuntimeError("There is no current event loop in thread '
7676 '\'ThreadPoolExecutor-0_0\'.")'),
7677 ('get_response',
7678 '<bound method BaseHandler._get_response of '
7679 '<django.core.handlers.wsgi.WSGIHandler object at '
7680 '0x7f6ac4805d90>>')]},
7681 {'context_line': ' response = '
7682 'wrapped_callback(request, *callback_args, '
7683 '**callback_kwargs)',
7684 'exc_cause': None,
7685 'exc_cause_explicit': None,
7686 'filename': '/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py',
7687 'function': '_get_response',
7688 'id': 140096216599104,
7689 'lineno': 181,
7690 'post_context': [' except Exception as e:',
7691 ' response = '
7692 'self.process_exception_by_middleware(e, '
7693 'request)',
7694 ' if response is None:',
7695 ' raise',
7696 '',
7697 ' # Complain if the view returned None (a '
7698 'common error).'],
7699 'pre_context': ['',
7700 ' if response is None:',
7701 ' wrapped_callback = '
7702 'self.make_view_atomic(callback)',
7703 ' # If it is an asynchronous view, run '
7704 'it in a subthread.',
7705 ' if '
7706 'asyncio.iscoroutinefunction(wrapped_callback):',
7707 ' wrapped_callback = '
7708 'async_to_sync(wrapped_callback)',
7709 ' try:'],
7710 'pre_context_lineno': 174,
7711 'tb': <traceback object at 0x7f6ab1398a40>,
7712 'type': 'django',
7713 'vars': [('self',
7714 '<django.core.handlers.wsgi.WSGIHandler object at '
7715 '0x7f6ac4805d90>'),
7716 ('request',
7717 '<WSGIRequest: GET '
7718 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
7719 ('response', 'None'),
7720 ('callback',
7721 '<function KeywordDifficultyAPIView at 0x7f6ac38e68b0>'),
7722 ('callback_args', '()'),
7723 ('callback_kwargs', '{}'),
7724 ('middleware_method',
7725 '<function CsrfViewMiddleware.process_view at '
7726 '0x7f6ac4452ee0>'),
7727 ('wrapped_callback',
7728 '<function KeywordDifficultyAPIView at '
7729 '0x7f6ac38e68b0>')]},
7730 {'context_line': ' return view_func(*args, **kwargs)',
7731 'exc_cause': None,
7732 'exc_cause_explicit': None,
7733 'filename': '/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py',
7734 'function': 'wrapped_view',
7735 'id': 140096216598400,
7736 'lineno': 54,
7737 'post_context': [' wrapped_view.csrf_exempt = True',
7738 ' return wraps(view_func)(wrapped_view)'],
7739 'pre_context': ['',
7740 '',
7741 'def csrf_exempt(view_func):',
7742 ' """Mark a view function as being exempt from '
7743 'the CSRF view protection."""',
7744 ' # view_func.csrf_exempt = True would also '
7745 'work, but decorators are nicer',
7746 " # if they don't have side effects, so return "
7747 'a new function.',
7748 ' def wrapped_view(*args, **kwargs):'],
7749 'pre_context_lineno': 47,
7750 'tb': <traceback object at 0x7f6ab1398780>,
7751 'type': 'django',
7752 'vars': [('args',
7753 '(<WSGIRequest: GET '
7754 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>,)"),
7755 ('kwargs', '{}'),
7756 ('view_func',
7757 '<function KeywordDifficultyAPIView at '
7758 '0x7f6ac38e6820>')]},
7759 {'context_line': ' return self.dispatch(request, *args, '
7760 '**kwargs)',
7761 'exc_cause': None,
7762 'exc_cause_explicit': None,
7763 'filename': '/usr/local/lib/python3.8/site-packages/django/views/generic/base.py',
7764 'function': 'view',
7765 'id': 140096216598208,
7766 'lineno': 70,
7767 'post_context': [' view.view_class = cls',
7768 ' view.view_initkwargs = initkwargs',
7769 '',
7770 ' # take name and docstring from class',
7771 ' update_wrapper(view, cls, updated=())',
7772 ''],
7773 'pre_context': [' self = cls(**initkwargs)',
7774 ' self.setup(request, *args, **kwargs)',
7775 " if not hasattr(self, 'request'):",
7776 ' raise AttributeError(',
7777 ' "%s instance has no '
7778 '\'request\' attribute. Did you override "',
7779 ' "setup() and forget to call '
7780 'super()?" % cls.__name__',
7781 ' )'],
7782 'pre_context_lineno': 63,
7783 'tb': <traceback object at 0x7f6ab13986c0>,
7784 'type': 'django',
7785 'vars': [('request',
7786 '<WSGIRequest: GET '
7787 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
7788 ('args', '()'),
7789 ('kwargs', '{}'),
7790 ('self',
7791 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7792 'at 0x7f6ab1141100>'),
7793 ('cls',
7794 '<class '
7795 "'backlink.api.v1.views.KeywordDifficultyAPIView'>"),
7796 ('initkwargs', '{}')]},
7797 {'context_line': ' response = '
7798 'self.handle_exception(exc)',
7799 'exc_cause': None,
7800 'exc_cause_explicit': None,
7801 'filename': '/usr/local/lib/python3.8/site-packages/rest_framework/views.py',
7802 'function': 'dispatch',
7803 'id': 140096216598464,
7804 'lineno': 509,
7805 'post_context': ['',
7806 ' self.response = '
7807 'self.finalize_response(request, response, '
7808 '*args, **kwargs)',
7809 ' return self.response',
7810 '',
7811 ' def options(self, request, *args, '
7812 '**kwargs):',
7813 ' """'],
7814 'pre_context': [' '
7815 'self.http_method_not_allowed)',
7816 ' else:',
7817 ' handler = '
7818 'self.http_method_not_allowed',
7819 '',
7820 ' response = handler(request, *args, '
7821 '**kwargs)',
7822 '',
7823 ' except Exception as exc:'],
7824 'pre_context_lineno': 502,
7825 'tb': <traceback object at 0x7f6ab13987c0>,
7826 'type': 'user',
7827 'vars': [('self',
7828 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7829 'at 0x7f6ab1141100>'),
7830 ('request',
7831 '<rest_framework.request.Request: GET '
7832 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
7833 ('args', '()'),
7834 ('kwargs', '{}'),
7835 ('handler',
7836 '<bound method KeywordDifficultyAPIView.get of '
7837 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7838 'at 0x7f6ab1141100>>')]},
7839 {'context_line': ' self.raise_uncaught_exception(exc)',
7840 'exc_cause': None,
7841 'exc_cause_explicit': None,
7842 'filename': '/usr/local/lib/python3.8/site-packages/rest_framework/views.py',
7843 'function': 'handle_exception',
7844 'id': 140096216599168,
7845 'lineno': 469,
7846 'post_context': ['',
7847 ' response.exception = True',
7848 ' return response',
7849 '',
7850 ' def raise_uncaught_exception(self, exc):',
7851 ' if settings.DEBUG:'],
7852 'pre_context': ['',
7853 ' exception_handler = '
7854 'self.get_exception_handler()',
7855 '',
7856 ' context = '
7857 'self.get_exception_handler_context()',
7858 ' response = exception_handler(exc, '
7859 'context)',
7860 '',
7861 ' if response is None:'],
7862 'pre_context_lineno': 462,
7863 'tb': <traceback object at 0x7f6ab1398a80>,
7864 'type': 'user',
7865 'vars': [('self',
7866 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7867 'at 0x7f6ab1141100>'),
7868 ('exc',
7869 'RuntimeError("There is no current event loop in thread '
7870 '\'ThreadPoolExecutor-0_0\'.")'),
7871 ('exception_handler',
7872 '<function exception_handler at 0x7f6ac3d6f3a0>'),
7873 ('context',
7874 "{'args': (),\n"
7875 " 'kwargs': {},\n"
7876 " 'request': <rest_framework.request.Request: GET "
7877 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>,\n"
7878 " 'view': "
7879 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7880 'at 0x7f6ab1141100>}'),
7881 ('response', 'None')]},
7882 {'context_line': ' raise exc',
7883 'exc_cause': None,
7884 'exc_cause_explicit': None,
7885 'filename': '/usr/local/lib/python3.8/site-packages/rest_framework/views.py',
7886 'function': 'raise_uncaught_exception',
7887 'id': 140096216599232,
7888 'lineno': 480,
7889 'post_context': ['',
7890 ' # Note: Views are made CSRF exempt from '
7891 'within `as_view` as to prevent',
7892 ' # accidental removal of this exemption in '
7893 'cases where `dispatch` needs to',
7894 ' # be overridden.',
7895 ' def dispatch(self, request, *args, '
7896 '**kwargs):',
7897 ' """'],
7898 'pre_context': ['',
7899 ' def raise_uncaught_exception(self, exc):',
7900 ' if settings.DEBUG:',
7901 ' request = self.request',
7902 ' renderer_format = '
7903 "getattr(request.accepted_renderer, 'format')",
7904 ' use_plaintext_traceback = '
7905 "renderer_format not in ('html', 'api', 'admin')",
7906 ' '
7907 'request.force_plaintext_errors(use_plaintext_traceback)'],
7908 'pre_context_lineno': 473,
7909 'tb': <traceback object at 0x7f6ab1398ac0>,
7910 'type': 'user',
7911 'vars': [('self',
7912 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7913 'at 0x7f6ab1141100>'),
7914 ('exc',
7915 'RuntimeError("There is no current event loop in thread '
7916 '\'ThreadPoolExecutor-0_0\'.")'),
7917 ('request',
7918 '<rest_framework.request.Request: GET '
7919 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
7920 ('renderer_format', "'json'"),
7921 ('use_plaintext_traceback', 'True')]},
7922 {'context_line': ' response = handler(request, *args, '
7923 '**kwargs)',
7924 'exc_cause': None,
7925 'exc_cause_explicit': None,
7926 'filename': '/usr/local/lib/python3.8/site-packages/rest_framework/views.py',
7927 'function': 'dispatch',
7928 'id': 140096216597952,
7929 'lineno': 506,
7930 'post_context': ['',
7931 ' except Exception as exc:',
7932 ' response = '
7933 'self.handle_exception(exc)',
7934 '',
7935 ' self.response = '
7936 'self.finalize_response(request, response, '
7937 '*args, **kwargs)',
7938 ' return self.response'],
7939 'pre_context': [' # Get the appropriate handler method',
7940 ' if request.method.lower() in '
7941 'self.http_method_names:',
7942 ' handler = getattr(self, '
7943 'request.method.lower(),',
7944 ' '
7945 'self.http_method_not_allowed)',
7946 ' else:',
7947 ' handler = '
7948 'self.http_method_not_allowed',
7949 ''],
7950 'pre_context_lineno': 499,
7951 'tb': <traceback object at 0x7f6ab13985c0>,
7952 'type': 'user',
7953 'vars': [('self',
7954 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7955 'at 0x7f6ab1141100>'),
7956 ('request',
7957 '<rest_framework.request.Request: GET '
7958 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
7959 ('args', '()'),
7960 ('kwargs', '{}'),
7961 ('handler',
7962 '<bound method KeywordDifficultyAPIView.get of '
7963 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
7964 'at 0x7f6ab1141100>>')]},
7965 {'context_line': ' websites = '
7966 'Website.objects.get_or_create_from_urls(urls=website_urls)',
7967 'exc_cause': None,
7968 'exc_cause_explicit': None,
7969 'filename': '/usr/src/app/backlink/api/v1/views.py',
7970 'function': 'get',
7971 'id': 140096216598272,
7972 'lineno': 247,
7973 'post_context': [" stopwatch_instance.click('WEBSITES "
7974 "GET_OR_CREATE')",
7975 " stopwatch_instance.click('WEBSITES GET "
7976 "WEBSITE DATA FOR EACH')",
7977 ' website_ids = [website.id for website '
7978 'in websites]',
7979 ' websites_qs = '
7980 'Website.objects.filter(pk__in=website_ids)',
7981 ' websites_specs = '
7982 'get_website_data(websites_qs=websites_qs)',
7983 " stopwatch_instance.click('WEBSITES GET "
7984 "WEBSITE DATA FOR EACH')"],
7985 'pre_context': [" stopwatch_instance.click('GET WEBSITES')",
7986 ' website_urls = '
7987 'request.GET.getlist("websites")',
7988 " stopwatch_instance.click('GET WEBSITES')",
7989 ' if not website_urls:',
7990 ' error_message = f"Invalid '
7991 'website_urls received: {website_urls}"',
7992 ' raise '
7993 'serializers.ValidationError(error_message)',
7994 " stopwatch_instance.click('WEBSITES "
7995 "GET_OR_CREATE')"],
7996 'pre_context_lineno': 240,
7997 'tb': <traceback object at 0x7f6ab1398700>,
7998 'type': 'user',
7999 'vars': [('self',
8000 '<backlink.api.v1.views.KeywordDifficultyAPIView object '
8001 'at 0x7f6ab1141100>'),
8002 ('request',
8003 '<rest_framework.request.Request: GET '
8004 "'/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com'>"),
8005 ('kwargs', '{}'),
8006 ('stopwatch_instance',
8007 '<utils.profiling.Stopwatch object at 0x7f6ab1141bb0>'),
8008 ('website_urls',
8009 "['jackjones.com',\n"
8010 " 'jack-jones.ca',\n"
8011 " 'bestsellerclothing.com',\n"
8012 " 'jackjones.in',\n"
8013 " 'wikipedia.org',\n"
8014 " 'jakeandjones.com',\n"
8015 " 'jackandjones.com',\n"
8016 " 'amazon.com',\n"
8017 " 'instagram.com',\n"
8018 " 'apple.com']")]},
8019 {'context_line': ' return '
8020 'get_or_create_from_url_results(urls)',
8021 'exc_cause': None,
8022 'exc_cause_explicit': None,
8023 'filename': '/usr/src/app/backlink/models.py',
8024 'function': 'get_or_create_from_urls',
8025 'id': 140096216597184,
8026 'lineno': 112,
8027 'post_context': [' else:',
8028 ' return '
8029 '[self.get_or_create_from_url(url, run_async) '
8030 'for url in urls]',
8031 '',
8032 '',
8033 'class Website(models.Model):',
8034 ' url = models.CharField(max_length=100, '
8035 'default=None, null=True, blank=True)'],
8036 'pre_context': ['',
8037 ' return await asyncio.gather(*task_list)',
8038 '',
8039 ' def get_or_create_from_urls(self, urls: '
8040 'Iterable[str], run_async=True):',
8041 ' if run_async:',
8042 ' get_or_create_from_url_results = '
8043 'async_to_sync(',
8044 ' '
8045 'self._gather_async_results_from_get_or_create_from_url)'],
8046 'pre_context_lineno': 105,
8047 'tb': <traceback object at 0x7f6ab13982c0>,
8048 'type': 'user',
8049 'vars': [('urls',
8050 "['jackjones.com',\n"
8051 " 'jack-jones.ca',\n"
8052 " 'bestsellerclothing.com',\n"
8053 " 'jackjones.in',\n"
8054 " 'wikipedia.org',\n"
8055 " 'jakeandjones.com',\n"
8056 " 'jackandjones.com',\n"
8057 " 'amazon.com',\n"
8058 " 'instagram.com',\n"
8059 " 'apple.com']"),
8060 ('get_or_create_from_url_results',
8061 '<asgiref.sync.AsyncToSync object at 0x7f6ab1141460>'),
8062 ('run_async', 'True'),
8063 ('self',
8064 '<backlink.models.WebsiteManager object at '
8065 '0x7f6ac47f79a0>')]},
8066 {'context_line': ' return call_result.result()',
8067 'exc_cause': None,
8068 'exc_cause_explicit': None,
8069 'filename': '/usr/local/lib/python3.8/site-packages/asgiref/sync.py',
8070 'function': '__call__',
8071 'id': 140096216597632,
8072 'lineno': 222,
8073 'post_context': ['',
8074 ' def _run_event_loop(self, loop, coro):',
8075 ' """',
8076 ' Runs the given event loop (designed to '
8077 'be called in a thread).',
8078 ' """',
8079 ' asyncio.set_event_loop(loop)'],
8080 'pre_context': [' del self.executors.current',
8081 ' if old_current_executor:',
8082 ' self.executors.current = '
8083 'old_current_executor',
8084 ' if contextvars is not None:',
8085 ' _restore_context(context[0])',
8086 '',
8087 ' # Wait for results from the future.'],
8088 'pre_context_lineno': 215,
8089 'tb': <traceback object at 0x7f6ab1398480>,
8090 'type': 'user',
8091 'vars': [('self',
8092 '<asgiref.sync.AsyncToSync object at 0x7f6ab1141460>'),
8093 ('args',
8094 "(['jackjones.com',\n"
8095 " 'jack-jones.ca',\n"
8096 " 'bestsellerclothing.com',\n"
8097 " 'jackjones.in',\n"
8098 " 'wikipedia.org',\n"
8099 " 'jakeandjones.com',\n"
8100 " 'jackandjones.com',\n"
8101 " 'amazon.com',\n"
8102 " 'instagram.com',\n"
8103 " 'apple.com'],)"),
8104 ('kwargs', '{}'),
8105 ('event_loop',
8106 '<_UnixSelectorEventLoop running=False closed=False '
8107 'debug=False>'),
8108 ('context', '[<Context object at 0x7f6ac1b243c0>]'),
8109 ('call_result',
8110 '<Future at 0x7f6ab1141f70 state=finished raised '
8111 'RuntimeError>'),
8112 ('source_thread',
8113 '<_MainThread(MainThread, started 140096971044672)>'),
8114 ('old_current_executor', 'None'),
8115 ('current_executor',
8116 '<asgiref.current_thread_executor.CurrentThreadExecutor '
8117 'object at 0x7f6ab1141430>'),
8118 ('awaitable',
8119 '<coroutine object AsyncToSync.main_wrap at '
8120 '0x7f6ab2720a40>'),
8121 ('loop',
8122 '<_UnixSelectorEventLoop running=False closed=True '
8123 'debug=False>'),
8124 ('loop_executor',
8125 '<concurrent.futures.thread.ThreadPoolExecutor object '
8126 'at 0x7f6ab26491f0>'),
8127 ('loop_future',
8128 '<Future at 0x7f6ab2649a00 state=finished returned '
8129 'NoneType>')]},
8130 {'context_line': ' return self.__get_result()',
8131 'exc_cause': None,
8132 'exc_cause_explicit': None,
8133 'filename': '/usr/local/lib/python3.8/concurrent/futures/_base.py',
8134 'function': 'result',
8135 'id': 140096216598080,
8136 'lineno': 437,
8137 'post_context': ['',
8138 ' self._condition.wait(timeout)',
8139 '',
8140 ' if self._state in [CANCELLED, '
8141 'CANCELLED_AND_NOTIFIED]:',
8142 ' raise CancelledError()',
8143 ' elif self._state == FINISHED:'],
8144 'pre_context': [' Exception: If the call raised then '
8145 'that exception will be raised.',
8146 ' """',
8147 ' try:',
8148 ' with self._condition:',
8149 ' if self._state in [CANCELLED, '
8150 'CANCELLED_AND_NOTIFIED]:',
8151 ' raise CancelledError()',
8152 ' elif self._state == FINISHED:'],
8153 'pre_context_lineno': 430,
8154 'tb': <traceback object at 0x7f6ab1398640>,
8155 'type': 'user',
8156 'vars': [('self', 'None'), ('timeout', 'None')]},
8157 {'context_line': ' raise self._exception',
8158 'exc_cause': None,
8159 'exc_cause_explicit': None,
8160 'filename': '/usr/local/lib/python3.8/concurrent/futures/_base.py',
8161 'function': '__get_result',
8162 'id': 140096245423424,
8163 'lineno': 389,
8164 'post_context': [' finally:',
8165 ' # Break a reference cycle with '
8166 'the exception in self._exception',
8167 ' self = None',
8168 ' else:',
8169 ' return self._result',
8170 ''],
8171 'pre_context': [' """Return True of the future was '
8172 'cancelled or finished executing."""',
8173 ' with self._condition:',
8174 ' return self._state in [CANCELLED, '
8175 'CANCELLED_AND_NOTIFIED, FINISHED]',
8176 '',
8177 ' def __get_result(self):',
8178 ' if self._exception:',
8179 ' try:'],
8180 'pre_context_lineno': 382,
8181 'tb': <traceback object at 0x7f6ab2f15d40>,
8182 'type': 'user',
8183 'vars': [('self', 'None')]},
8184 {'context_line': ' result = await '
8185 'self.awaitable(*args, **kwargs)',
8186 'exc_cause': None,
8187 'exc_cause_explicit': None,
8188 'filename': '/usr/local/lib/python3.8/site-packages/asgiref/sync.py',
8189 'function': 'main_wrap',
8190 'id': 140096470011264,
8191 'lineno': 287,
8192 'post_context': [' except BaseException as e:',
8193 ' call_result.set_exception(e)',
8194 ' else:',
8195 ' call_result.set_result(result)',
8196 ' finally:',
8197 ' del self.launch_map[current_task]'],
8198 'pre_context': [' # after raising it so exc_info is '
8199 'correctly populated.',
8200 ' if exc_info[1]:',
8201 ' try:',
8202 ' raise exc_info[1]',
8203 ' except BaseException:',
8204 ' result = await '
8205 'self.awaitable(*args, **kwargs)',
8206 ' else:'],
8207 'pre_context_lineno': 280,
8208 'tb': <traceback object at 0x7f6ac0544d80>,
8209 'type': 'user',
8210 'vars': [('self',
8211 '<asgiref.sync.AsyncToSync object at 0x7f6ab1141460>'),
8212 ('args',
8213 "(['jackjones.com',\n"
8214 " 'jack-jones.ca',\n"
8215 " 'bestsellerclothing.com',\n"
8216 " 'jackjones.in',\n"
8217 " 'wikipedia.org',\n"
8218 " 'jakeandjones.com',\n"
8219 " 'jackandjones.com',\n"
8220 " 'amazon.com',\n"
8221 " 'instagram.com',\n"
8222 " 'apple.com'],)"),
8223 ('kwargs', '{}'),
8224 ('call_result',
8225 '<Future at 0x7f6ab1141f70 state=finished raised '
8226 'RuntimeError>'),
8227 ('source_thread',
8228 '<_MainThread(MainThread, started 140096971044672)>'),
8229 ('exc_info', '(None, None, None)'),
8230 ('context', '[<Context object at 0x7f6ac1b243c0>]'),
8231 ('current_task',
8232 "<Task finished name='Task-206' "
8233 'coro=<AsyncToSync.main_wrap() done, defined at '
8234 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:266> '
8235 'result=None>')]},
8236 {'context_line': ' return await asyncio.gather(*task_list)',
8237 'exc_cause': None,
8238 'exc_cause_explicit': None,
8239 'filename': '/usr/src/app/backlink/models.py',
8240 'function': '_gather_async_results_from_get_or_create_from_url',
8241 'id': 140096481067456,
8242 'lineno': 106,
8243 'post_context': ['',
8244 ' def get_or_create_from_urls(self, urls: '
8245 'Iterable[str], run_async=True):',
8246 ' if run_async:',
8247 ' get_or_create_from_url_results = '
8248 'async_to_sync(',
8249 ' '
8250 'self._gather_async_results_from_get_or_create_from_url)',
8251 ' return '
8252 'get_or_create_from_url_results(urls)'],
8253 'pre_context': ['',
8254 ' for url in urls:',
8255 ' future = asyncio.create_task(',
8256 ' '
8257 'get_or_create_from_url_async(url, '
8258 'run_async=True)',
8259 ' )',
8260 ' task_list.append(future)',
8261 ''],
8262 'pre_context_lineno': 99,
8263 'tb': <traceback object at 0x7f6ac0fd01c0>,
8264 'type': 'user',
8265 'vars': [('self',
8266 '<backlink.models.WebsiteManager object at '
8267 '0x7f6ac47f79a0>'),
8268 ('urls',
8269 "['jackjones.com',\n"
8270 " 'jack-jones.ca',\n"
8271 " 'bestsellerclothing.com',\n"
8272 " 'jackjones.in',\n"
8273 " 'wikipedia.org',\n"
8274 " 'jakeandjones.com',\n"
8275 " 'jackandjones.com',\n"
8276 " 'amazon.com',\n"
8277 " 'instagram.com',\n"
8278 " 'apple.com']"),
8279 ('task_list',
8280 "[<Task finished name='Task-207' "
8281 'coro=<SyncToAsync.__call__() done, defined at '
8282 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8283 'result=<Website: jac... -> None rows>>,\n'
8284 " <Task finished name='Task-208' "
8285 'coro=<SyncToAsync.__call__() done, defined at '
8286 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8287 'result=<Website: jac... -> None rows>>,\n'
8288 " <Task finished name='Task-209' "
8289 'coro=<SyncToAsync.__call__() done, defined at '
8290 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8291 'result=<Website: bes... -> None rows>>,\n'
8292 " <Task finished name='Task-210' "
8293 'coro=<SyncToAsync.__call__() done, defined at '
8294 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8295 'result=<Website: jac... -> None rows>>,\n'
8296 " <Task finished name='Task-211' "
8297 'coro=<SyncToAsync.__call__() done, defined at '
8298 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8299 'result=<Website: wik...ne -> 79 rows>>,\n'
8300 " <Task finished name='Task-212' "
8301 'coro=<SyncToAsync.__call__() done, defined at '
8302 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8303 'exception=RuntimeError("There is no current event loop '
8304 'in thread \'ThreadPoolExecutor-0_0\'.")>,\n'
8305 " <Task cancelled name='Task-213' "
8306 'coro=<SyncToAsync.__call__() done, defined at '
8307 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>,\n'
8308 " <Task cancelled name='Task-214' "
8309 'coro=<SyncToAsync.__call__() done, defined at '
8310 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>,\n'
8311 " <Task cancelled name='Task-215' "
8312 'coro=<SyncToAsync.__call__() done, defined at '
8313 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>,\n'
8314 " <Task cancelled name='Task-216' "
8315 'coro=<SyncToAsync.__call__() done, defined at '
8316 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>]'),
8317 ('get_or_create_from_url_async',
8318 '<asgiref.sync.SyncToAsync object at 0x7f6ab2649910>'),
8319 ('url', "'apple.com'"),
8320 ('future',
8321 "<Task cancelled name='Task-216' "
8322 'coro=<SyncToAsync.__call__() done, defined at '
8323 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372>>')]},
8324 {'context_line': ' ret = await asyncio.wait_for(future, '
8325 'timeout=None)',
8326 'exc_cause': None,
8327 'exc_cause_explicit': None,
8328 'filename': '/usr/local/lib/python3.8/site-packages/asgiref/sync.py',
8329 'function': '__call__',
8330 'id': 140096214333696,
8331 'lineno': 423,
8332 'post_context': ['',
8333 ' if contextvars is not None:',
8334 ' _restore_context(context)',
8335 '',
8336 ' return ret',
8337 ''],
8338 'pre_context': [' self.get_current_task(),',
8339 ' sys.exc_info(),',
8340 ' func,',
8341 ' *args,',
8342 ' **kwargs,',
8343 ' ),',
8344 ' )'],
8345 'pre_context_lineno': 416,
8346 'tb': <traceback object at 0x7f6ab116f900>,
8347 'type': 'user',
8348 'vars': [('self',
8349 '<asgiref.sync.SyncToAsync object at 0x7f6ab2649910>'),
8350 ('args',
8351 '(functools.partial(<function '
8352 'WebsiteManager._get_or_create_from_url_base_method at '
8353 "0x7f6ac4869ee0>, 'jakeandjones.com', "
8354 'run_async=True),)'),
8355 ('kwargs', '{}'),
8356 ('loop',
8357 '<_UnixSelectorEventLoop running=False closed=True '
8358 'debug=False>'),
8359 ('executor',
8360 '<concurrent.futures.thread.ThreadPoolExecutor object '
8361 'at 0x7f6adbf5f610>'),
8362 ('context', '<Context object at 0x7f6ac235d140>'),
8363 ('child',
8364 'functools.partial(<function '
8365 'WebsiteManager._get_or_create_from_url_base_method at '
8366 "0x7f6ac4869ee0>, 'jakeandjones.com', run_async=True)"),
8367 ('func',
8368 '<built-in method run of Context object at '
8369 '0x7f6ac235d140>'),
8370 ('future',
8371 '<Future finished exception=RuntimeError("There is no '
8372 'current event loop in thread '
8373 '\'ThreadPoolExecutor-0_0\'.")>')]},
8374 {'context_line': ' return await fut',
8375 'exc_cause': None,
8376 'exc_cause_explicit': None,
8377 'filename': '/usr/local/lib/python3.8/asyncio/tasks.py',
8378 'function': 'wait_for',
8379 'id': 140096214333376,
8380 'lineno': 455,
8381 'post_context': ['',
8382 ' if timeout <= 0:',
8383 ' fut = ensure_future(fut, loop=loop)',
8384 '',
8385 ' if fut.done():',
8386 ' return fut.result()'],
8387 'pre_context': [' loop = events.get_running_loop()',
8388 ' else:',
8389 ' warnings.warn("The loop argument is '
8390 'deprecated since Python 3.8, "',
8391 ' "and scheduled for removal '
8392 'in Python 3.10.",',
8393 ' DeprecationWarning, '
8394 'stacklevel=2)',
8395 '',
8396 ' if timeout is None:'],
8397 'pre_context_lineno': 448,
8398 'tb': <traceback object at 0x7f6ab116f7c0>,
8399 'type': 'user',
8400 'vars': [('fut',
8401 '<Future finished exception=RuntimeError("There is no '
8402 'current event loop in thread '
8403 '\'ThreadPoolExecutor-0_0\'.")>'),
8404 ('timeout', 'None'),
8405 ('loop',
8406 '<_UnixSelectorEventLoop running=False closed=True '
8407 'debug=False>')]},
8408 {'context_line': ' result = self.fn(*self.args, '
8409 '**self.kwargs)',
8410 'exc_cause': None,
8411 'exc_cause_explicit': None,
8412 'filename': '/usr/local/lib/python3.8/concurrent/futures/thread.py',
8413 'function': 'run',
8414 'id': 140096216597888,
8415 'lineno': 57,
8416 'post_context': [' except BaseException as exc:',
8417 ' self.future.set_exception(exc)',
8418 ' # Break a reference cycle with the '
8419 "exception 'exc'",
8420 ' self = None',
8421 ' else:',
8422 ' self.future.set_result(result)'],
8423 'pre_context': [' self.kwargs = kwargs',
8424 '',
8425 ' def run(self):',
8426 ' if not '
8427 'self.future.set_running_or_notify_cancel():',
8428 ' return',
8429 '',
8430 ' try:'],
8431 'pre_context_lineno': 50,
8432 'tb': <traceback object at 0x7f6ab1398580>,
8433 'type': 'user',
8434 'vars': [('self', 'None')]},
8435 {'context_line': ' return func(*args, **kwargs)',
8436 'exc_cause': None,
8437 'exc_cause_explicit': None,
8438 'filename': '/usr/local/lib/python3.8/site-packages/asgiref/sync.py',
8439 'function': 'thread_handler',
8440 'id': 140096216596992,
8441 'lineno': 462,
8442 'post_context': [' finally:',
8443 ' # Only delete the launch_map parent '
8444 'if we set it, otherwise it is',
8445 ' # from someone else.',
8446 ' if parent_set:',
8447 ' del '
8448 'self.launch_map[current_thread]',
8449 ''],
8450 'pre_context': [' # after raising it so exc_info is '
8451 'correctly populated.',
8452 ' if exc_info[1]:',
8453 ' try:',
8454 ' raise exc_info[1]',
8455 ' except BaseException:',
8456 ' return func(*args, **kwargs)',
8457 ' else:'],
8458 'pre_context_lineno': 455,
8459 'tb': <traceback object at 0x7f6ab1398200>,
8460 'type': 'user',
8461 'vars': [('self',
8462 '<asgiref.sync.SyncToAsync object at 0x7f6ab2649910>'),
8463 ('loop',
8464 '<_UnixSelectorEventLoop running=False closed=True '
8465 'debug=False>'),
8466 ('source_task',
8467 "<Task finished name='Task-212' "
8468 'coro=<SyncToAsync.__call__() done, defined at '
8469 '/usr/local/lib/python3.8/site-packages/asgiref/sync.py:372> '
8470 'exception=RuntimeError("There is no current event loop '
8471 'in thread \'ThreadPoolExecutor-0_0\'.")>'),
8472 ('exc_info', '(None, None, None)'),
8473 ('func',
8474 '<built-in method run of Context object at '
8475 '0x7f6ac235d140>'),
8476 ('args',
8477 '(functools.partial(<function '
8478 'WebsiteManager._get_or_create_from_url_base_method at '
8479 "0x7f6ac4869ee0>, 'jakeandjones.com', "
8480 'run_async=True),)'),
8481 ('kwargs', '{}'),
8482 ('current_thread',
8483 '<Thread(ThreadPoolExecutor-0_0, started daemon '
8484 '140096513824512)>'),
8485 ('parent_set', 'True')]},
8486 {'context_line': ' website.on_created(run_async)',
8487 'exc_cause': None,
8488 'exc_cause_explicit': None,
8489 'filename': '/usr/src/app/backlink/models.py',
8490 'function': '_get_or_create_from_url_base_method',
8491 'id': 140096216597056,
8492 'lineno': 84,
8493 'post_context': [' else:',
8494 " logger.debug(f'Existing website: "
8495 "{url} id: {website.id}')",
8496 " stopwatch_instance.click('CALLBACKS')",
8497 ' stopwatch_instance.log_overall_time()',
8498 ' return website',
8499 ''],
8500 'pre_context': [" tld=data['tld'],",
8501 ' defaults=dict(url=url, '
8502 "title=data['title'])",
8503 ' )',
8504 " stopwatch_instance.click('GET OR "
8505 "CREATE')",
8506 " stopwatch_instance.click('CALLBACKS')",
8507 ' if was_created:',
8508 " logger.debug(f'Created new Website "
8509 "for URL: {url}.')"],
8510 'pre_context_lineno': 77,
8511 'tb': <traceback object at 0x7f6ab1398240>,
8512 'type': 'user',
8513 'vars': [('url', "'jakeandjones.com'"),
8514 ('run_async', 'True'),
8515 ('stopwatch_instance',
8516 '<utils.profiling.Stopwatch object at 0x7f6ac05f0550>'),
8517 ('data',
8518 "{'domain': 'jakeandjones.com',\n"
8519 " 'hostname': 'jakeandjones.com',\n"
8520 " 'title': 'jakeandjones',\n"
8521 " 'tld': 'com'}"),
8522 ('website',
8523 '<Website: jakeandjones.com | ahrefsbacklinks:None -> '
8524 'None rows | majesticbacklinks:None -> None rows | '
8525 'urldownload:None -> None rows | urlclassify:None -> '
8526 'None rows | toxicity:None -> None rows>'),
8527 ('was_created', 'True')]},
8528 {'context_line': ' self.pull_website_stats_ahrefs()',
8529 'exc_cause': None,
8530 'exc_cause_explicit': None,
8531 'filename': '/usr/src/app/backlink/models.py',
8532 'function': 'on_created',
8533 'id': 140096216597376,
8534 'lineno': 287,
8535 'post_context': [' '
8536 "stopwatch_instance.click('pull_website_stats_ahrefs')",
8537 ' '
8538 "stopwatch_instance.click('pull_screenshot')",
8539 " self._call_task('pull_screenshot', "
8540 'self, run_async)',
8541 ' '
8542 "stopwatch_instance.click('pull_screenshot')",
8543 ' stopwatch_instance.log_overall_time()',
8544 ' # START - Celery Task Management Methods'],
8545 'pre_context': [' """',
8546 ' This method gets called after a new '
8547 'Website gets created',
8548 ' """',
8549 ' stopwatch_instance = '
8550 "Stopwatch('Website.on_created')",
8551 ' '
8552 'self.pull_ahrefs_backlinks(run_async=run_async)',
8553 ' '
8554 'self.pull_majestic_backlinks(run_async=run_async)',
8555 ' '
8556 "stopwatch_instance.click('pull_website_stats_ahrefs')"],
8557 'pre_context_lineno': 280,
8558 'tb': <traceback object at 0x7f6ab1398380>,
8559 'type': 'user',
8560 'vars': [('self',
8561 '<Website: jakeandjones.com | ahrefsbacklinks:None -> '
8562 'None rows | majesticbacklinks:None -> None rows | '
8563 'urldownload:None -> None rows | urlclassify:None -> '
8564 'None rows | toxicity:None -> None rows>'),
8565 ('run_async', 'True'),
8566 ('stopwatch_instance',
8567 '<utils.profiling.Stopwatch object at '
8568 '0x7f6ab2649fd0>')]},
8569 {'context_line': ' update_website_stats(self)',
8570 'exc_cause': None,
8571 'exc_cause_explicit': None,
8572 'filename': '/usr/src/app/backlink/models.py',
8573 'function': 'pull_website_stats_ahrefs',
8574 'id': 140096216597440,
8575 'lineno': 235,
8576 'post_context': ['',
8577 ' def pull_majestic_backlinks(self, '
8578 'run_async=False, force=False):',
8579 ' """',
8580 ' The main method used to pull Majestic '
8581 'backlinks for a Website',
8582 ' """',
8583 ' if not '
8584 'self.should_process_majestic_backlinks:'],
8585 'pre_context': [' 4) ahrefs_refdomain_count',
8586 ' 5) ahrefs_website_stats_updated_at',
8587 ' """',
8588 ' from vendor.ahrefs.api import '
8589 'update_website_stats',
8590 ' if self.ahrefs_website_stats_updated_at '
8591 'and self.ahrefs_website_stats_updated_at > '
8592 'timezone.now() - datetime.timedelta(days=30):',
8593 " logger.info('Skipping update, data "
8594 "has been updated within the last 30 days...')",
8595 ' return'],
8596 'pre_context_lineno': 228,
8597 'tb': <traceback object at 0x7f6ab13983c0>,
8598 'type': 'user',
8599 'vars': [('self',
8600 '<Website: jakeandjones.com | ahrefsbacklinks:None -> '
8601 'None rows | majesticbacklinks:None -> None rows | '
8602 'urldownload:None -> None rows | urlclassify:None -> '
8603 'None rows | toxicity:None -> None rows>'),
8604 ('update_website_stats',
8605 '<function update_website_stats at 0x7f6ac5bb68b0>')]},
8606 {'context_line': ' response = '
8607 '{**api.get_positions_metrics(hostname, '
8608 'run_async=True),',
8609 'exc_cause': None,
8610 'exc_cause_explicit': None,
8611 'filename': '/usr/src/app/vendor/ahrefs/api.py',
8612 'function': 'update_website_stats',
8613 'id': 140096216598656,
8614 'lineno': 53,
8615 'post_context': [' '
8616 '**api.get_pages_extended_for_url(hostname, '
8617 'run_async=True),',
8618 ' '
8619 '**api.get_dr_and_ur_for_url(hostname, '
8620 'run_async=True)}',
8621 " stopwatch_instance.click('FETCH DATA')",
8622 " stopwatch_instance.click('SAVE NEW DATA')",
8623 '',
8624 ' internal_to_external = {'],
8625 'pre_context': [' Performs 2 API calls to get this data.',
8626 ' """',
8627 ' stopwatch_instance = '
8628 "Stopwatch('ahrefs.api.update_website_stats')",
8629 " stopwatch_instance.click('FETCH DATA')",
8630 ' hostname = website_obj.hostname',
8631 ' api = APIClient()',
8632 ' logger.info(f"Fetching data for {hostname} '
8633 'from ahrefs vendor")'],
8634 'pre_context_lineno': 46,
8635 'tb': <traceback object at 0x7f6ab1398880>,
8636 'type': 'user',
8637 'vars': [('website_obj',
8638 '<Website: jakeandjones.com | ahrefsbacklinks:None -> '
8639 'None rows | majesticbacklinks:None -> None rows | '
8640 'urldownload:None -> None rows | urlclassify:None -> '
8641 'None rows | toxicity:None -> None rows>'),
8642 ('stopwatch_instance',
8643 '<utils.profiling.Stopwatch object at 0x7f6ac059fac0>'),
8644 ('hostname', "'jakeandjones.com'"),
8645 ('api',
8646 '<vendor.ahrefs.api.APIClient object at '
8647 '0x7f6ac0037e50>')]},
8648 {'context_line': ' response = self.get(params, '
8649 "run_async=run_async)['metrics']",
8650 'exc_cause': None,
8651 'exc_cause_explicit': None,
8652 'filename': '/usr/src/app/vendor/ahrefs/api.py',
8653 'function': 'get_positions_metrics',
8654 'id': 140096216597696,
8655 'lineno': 273,
8656 'post_context': [' logger.info(f"Position_metris '
8657 '{response}")',
8658 ' return response',
8659 '',
8660 '',
8661 'async def fetch(url, params, session):',
8662 ' while True:'],
8663 'pre_context': [" 'from': 'positions_metrics',",
8664 " 'mode': 'subdomains',",
8665 " 'limit': limit,",
8666 " 'target': target,",
8667 " 'output': 'json',",
8668 " 'token': self.get_token(),",
8669 ' }'],
8670 'pre_context_lineno': 266,
8671 'tb': <traceback object at 0x7f6ab13984c0>,
8672 'type': 'user',
8673 'vars': [('self',
8674 '<vendor.ahrefs.api.APIClient object at '
8675 '0x7f6ac0037e50>'),
8676 ('target', "'jakeandjones.com'"),
8677 ('limit', '1000'),
8678 ('run_async', 'True'),
8679 ('params',
8680 "{'from': 'positions_metrics',\n"
8681 " 'limit': 1000,\n"
8682 " 'mode': 'subdomains',\n"
8683 " 'output': 'json',\n"
8684 " 'target': 'jakeandjones.com',\n"
8685 " 'token': "
8686 "'_VdtvfJ_POoce00XymccszGiO-0ltyC4g7ctpF8H'}")]},
8687 {'context_line': ' loop = asyncio.get_event_loop()',
8688 'exc_cause': None,
8689 'exc_cause_explicit': None,
8690 'filename': '/usr/src/app/vendor/ahrefs/api.py',
8691 'function': 'get',
8692 'id': 140096216599872,
8693 'lineno': 106,
8694 'post_context': [' return '
8695 'loop.run_until_complete(self.get_async(params))',
8696 ' return self.get_sync(params)',
8697 ' else:',
8698 " logger.info('Added queued async "
8699 "task from {}'.format(params['from']))",
8700 ' self.tasks.append(params)',
8701 ''],
8702 'pre_context': [' self.do_async = do_async',
8703 ' self.tasks = tasks',
8704 '',
8705 ' def get(self, params: dict, '
8706 'run_async=False):',
8707 ' if not self.do_async:',
8708 ' # Asyncio based (different kind of '
8709 'async)',
8710 ' if run_async:'],
8711 'pre_context_lineno': 99,
8712 'tb': <traceback object at 0x7f6ab1398d40>,
8713 'type': 'user',
8714 'vars': [('self',
8715 '<vendor.ahrefs.api.APIClient object at '
8716 '0x7f6ac0037e50>'),
8717 ('params',
8718 "{'from': 'positions_metrics',\n"
8719 " 'limit': 1000,\n"
8720 " 'mode': 'subdomains',\n"
8721 " 'output': 'json',\n"
8722 " 'target': 'jakeandjones.com',\n"
8723 " 'token': '_VdtvfJ_POoce00XymccszGiO-0ltyC4g7ctpF8H'}"),
8724 ('run_async', 'True')]},
8725 {'context_line': " raise RuntimeError('There is no "
8726 "current event loop in thread %r.'",
8727 'exc_cause': None,
8728 'exc_cause_explicit': None,
8729 'filename': '/usr/local/lib/python3.8/asyncio/events.py',
8730 'function': 'get_event_loop',
8731 'id': 140096237153024,
8732 'lineno': 639,
8733 'post_context': [' % '
8734 'threading.current_thread().name)',
8735 '',
8736 ' return self._local._loop',
8737 '',
8738 ' def set_event_loop(self, loop):',
8739 ' """Set the event loop."""'],
8740 'pre_context': [' """',
8741 ' if (self._local._loop is None and',
8742 ' not self._local._set_called and',
8743 ' '
8744 'isinstance(threading.current_thread(), '
8745 'threading._MainThread)):',
8746 ' '
8747 'self.set_event_loop(self.new_event_loop())',
8748 '',
8749 ' if self._local._loop is None:'],
8750 'pre_context_lineno': 632,
8751 'tb': <traceback object at 0x7f6ab2732b00>,
8752 'type': 'user',
8753 'vars': [('self',
8754 '<asyncio.unix_events._UnixDefaultEventLoopPolicy '
8755 'object at 0x7f6ac3919070>')]}],
8756 'is_email': False,
8757 'lastframe': {'context_line': " raise RuntimeError('There is no "
8758 "current event loop in thread %r.'",
8759 'exc_cause': None,
8760 'exc_cause_explicit': None,
8761 'filename': '/usr/local/lib/python3.8/asyncio/events.py',
8762 'function': 'get_event_loop',
8763 'id': 140096237153024,
8764 'lineno': 639,
8765 'post_context': [' % '
8766 'threading.current_thread().name)',
8767 '',
8768 ' return self._local._loop',
8769 '',
8770 ' def set_event_loop(self, loop):',
8771 ' """Set the event loop."""'],
8772 'pre_context': [' """',
8773 ' if (self._local._loop is None and',
8774 ' not self._local._set_called '
8775 'and',
8776 ' '
8777 'isinstance(threading.current_thread(), '
8778 'threading._MainThread)):',
8779 ' '
8780 'self.set_event_loop(self.new_event_loop())',
8781 '',
8782 ' if self._local._loop is None:'],
8783 'pre_context_lineno': 632,
8784 'tb': <traceback object at 0x7f6ab2732b00>,
8785 'type': 'user',
8786 'vars': [('self',
8787 '<asyncio.unix_events._UnixDefaultEventLoopPolicy '
8788 'object at 0x7f6ac3919070>')]},
8789 'postmortem': None,
8790 'request': '<<request>>',
8791 'request_COOKIES_items': dict_items([]),
8792 'request_FILES_items': <generator object MultiValueDict.items at 0x7f6ab26b3d60>,
8793 'request_GET_items': <generator object MultiValueDict.items at 0x7f6ab26b3dd0>,
8794 'request_meta': {'HTTP_ACCEPT': '*/*',
8795 'HTTP_ACCEPT_ENCODING': 'gzip',
8796 'HTTP_AUTHORIZATION': 'Bearer '
8797 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoic2xpZGluZyIsImV4cCI6MTYxODgzOTEwOSwianRpIjoiNzAwMWQ2MzcyMDU3NGFiYTk1YjU1MzgzNTk1OTllZWYiLCJyZWZyZXNoX2V4cCI6MTYxODgzOTEwOSwidXNlcl9pZCI6MTc1MDMsImN1c3RvbWVyIjp7ImlkIjo0MzksInRlYW1faWRzIjpbMTc5NTEsMTc1OTksMTc1OTgsMTc1MDMsMTczNzcsMTcwMTUsMTY2MTEsMTY1OTYsMTY0MzAsMTI5MTYsNjE0LDIyOCwxXSwiaXNfc3Vic2NyaWJlciI6ZmFsc2V9fQ.YStnE825oNUaSmUrOz0NSWM-nhAGl6ciAb4Ilu7Wy-A',
8798 'HTTP_CDN_LOOP': 'cloudflare',
8799 'HTTP_CF_CONNECTING_IP': '24.135.194.235',
8800 'HTTP_CF_IPCOUNTRY': 'RS',
8801 'HTTP_CF_RAY': '6406e12e68794db8-FRA',
8802 'HTTP_CF_REQUEST_ID': '09782b10fe00004db8a525e000000001',
8803 'HTTP_CF_VISITOR': '{"scheme":"https"}',
8804 'HTTP_HOST': 'backlink.searchatlas.com',
8805 'HTTP_USER_AGENT': 'python-requests/2.25.0',
8806 'HTTP_X_FORWARDED_FOR': '24.135.194.235, 10.24.5.1',
8807 'HTTP_X_FORWARDED_HOST': 'backlink.searchatlas.com',
8808 'HTTP_X_FORWARDED_PORT': '443',
8809 'HTTP_X_FORWARDED_PROTO': 'https',
8810 'HTTP_X_ORIGINAL_FORWARDED_FOR': '24.135.194.235',
8811 'HTTP_X_REAL_IP': '24.135.194.235',
8812 'HTTP_X_REQUEST_ID': 'cc6259e9f2d6506fef2fdee020a6bec3',
8813 'HTTP_X_SCHEME': 'https',
8814 'PATH_INFO': '/backlink/keyword-difficulty/',
8815 'QUERY_STRING': 'websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com',
8816 'RAW_URI': '/backlink/keyword-difficulty/?websites=jackjones.com&websites=jack-jones.ca&websites=bestsellerclothing.com&websites=jackjones.in&websites=wikipedia.org&websites=jakeandjones.com&websites=jackandjones.com&websites=amazon.com&websites=instagram.com&websites=apple.com',
8817 'REMOTE_ADDR': '10.24.5.30',
8818 'REMOTE_PORT': '57422',
8819 'REQUEST_METHOD': 'GET',
8820 'SCRIPT_NAME': '',
8821 'SERVER_NAME': '0.0.0.0',
8822 'SERVER_PORT': '8000',
8823 'SERVER_PROTOCOL': 'HTTP/1.1',
8824 'SERVER_SOFTWARE': 'gunicorn/20.0.4',
8825 'gunicorn.socket': <socket.socket fd=13, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.24.2.212', 8000), raddr=('10.24.5.30', 57422)>,
8826 'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f6ac03313a0>,
8827 'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>,
8828 'wsgi.input': <gunicorn.http.body.Body object at 0x7f6ac0331dc0>,
8829 'wsgi.input_terminated': True,
8830 'wsgi.multiprocess': True,
8831 'wsgi.multithread': False,
8832 'wsgi.run_once': False,
8833 'wsgi.url_scheme': 'http',
8834 'wsgi.version': (1, 0)},
8835 'server_time': datetime.datetime(2021, 4, 15, 17, 26, 34, 510895, tzinfo=<UTC>),
8836 'settings': {'ABSOLUTE_URL_OVERRIDES': {},
8837 'ADMINS': [],
8838 'ALLOWED_HOSTS': ['backlink.searchatlas.com',
8839 'backlinkapp-backlinkapp-production.backlinkapp-production.svc.cluster.local',
8840 'backlink-staging.searchatlas.com',
8841 'backlink.linkgraph.io'],
8842 'APPEND_SLASH': True,
8843 'AUTHENTICATION_BACKENDS': ['django.contrib.auth.backends.ModelBackend'],
8844 'AUTH_PASSWORD_VALIDATORS': '********************',
8845 'AUTH_USER_MODEL': 'backlink.user',
8846 'BACKLINK_ENVIRONMENT': 'production',
8847 'BACKLINK_WAREHOUSE_URL': 'clickhouse://backlink:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="88eaeeb1ede9b8b0ebb0bbbebfbeedeeb8eaebbfbfbcbdecb9b9bdb0ebe9bcbce9c8ebe4e1ebe3e0e7fdfbeda5eae9ebe3e4e1e6e3a6ebe4e1ebe3e0e7fdfbed">[email protected]</a>/backlink_data',
8848 'BASE_DIR': '/usr/src/app',
8849 'CACHES': {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}},
8850 'CACHE_MIDDLEWARE_ALIAS': 'default',
8851 'CACHE_MIDDLEWARE_KEY_PREFIX': '********************',
8852 'CACHE_MIDDLEWARE_SECONDS': 600,
8853 'CELERY_ACCEPT_CONTENT': ['application/json'],
8854 'CELERY_ALWAYS_EAGER': False,
8855 'CELERY_BEAT_SCHEDULE': {'periodically-get-subscription-info': {'schedule': <crontab: 0 15 * * * (m/h/d/dM/MY)>,
8856 'task': 'backlink.tasks.periodically_get_subscription_info'},
8857 'periodically-populate-backlink-toxicity-data': {'schedule': <crontab: 0 * * * * (m/h/d/dM/MY)>,
8858 'task': 'backlink.tasks.periodically_populate_backlink_toxicity_data'}},
8859 'CELERY_BROKER_URL': 'redis://redis-backlinkapp-production-master:6379',
8860 'CELERY_RESULT_BACKEND': 'django-db',
8861 'CELERY_RESULT_SERIALIZER': 'json',
8862 'CELERY_TASK_SERIALIZER': 'json',
8863 'CELERY_TIMEZONE': 'UTC',
8864 'CH_CLUSTER_NAME': 'cluster',
8865 'CLICKHOUSE_WAREHOUSE_SETTINGS': {'cluster_name': 'cluster',
8866 'is_cluster': True,
8867 'url': 'clickhouse://backlink:<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8ae8ecb3efebbab2e9b2b9bcbdbcefecbae8e9bdbdbebfeebbbbbfb2e9ebbebeebcae9e6e3e9e1e2e5fff9efa7e8ebe9e1e6e3e4e1a4e9e6e3e9e1e2e5fff9ef">[email protected]</a>/backlink_data'},
8868 'CORE_APPS': ['backlink.apps.BacklinkConfig'],
8869 'CORS_ALLOW_CREDENTIALS': True,
8870 'CORS_ORIGIN_WHITELIST': ['https://dashboard.linkgraph.io',
8871 'http://localhost:3000'],
8872 'CSRF_COOKIE_AGE': 31449600,
8873 'CSRF_COOKIE_DOMAIN': None,
8874 'CSRF_COOKIE_HTTPONLY': False,
8875 'CSRF_COOKIE_NAME': 'csrftoken',
8876 'CSRF_COOKIE_PATH': '/',
8877 'CSRF_COOKIE_SAMESITE': 'Lax',
8878 'CSRF_COOKIE_SECURE': False,
8879 'CSRF_FAILURE_VIEW': 'django.views.csrf.csrf_failure',
8880 'CSRF_HEADER_NAME': 'HTTP_X_CSRFTOKEN',
8881 'CSRF_TRUSTED_ORIGINS': [],
8882 'CSRF_USE_SESSIONS': False,
8883 'DATABASES': {'default': {'ATOMIC_REQUESTS': False,
8884 'AUTOCOMMIT': True,
8885 'CONN_MAX_AGE': 0,
8886 'ENGINE': 'django.db.backends.postgresql',
8887 'HOST': 'domainprospector-prod-db.cloudsql-proxy',
8888 'NAME': 'backlinkapp_db',
8889 'OPTIONS': {},
8890 'PASSWORD': '********************',
8891 'PORT': '5432',
8892 'TEST': {'CHARSET': None,
8893 'COLLATION': None,
8894 'MIGRATE': True,
8895 'MIRROR': None,
8896 'NAME': None},
8897 'TIME_ZONE': None,
8898 'USER': 'backlinkapp'}},
8899 'DATABASE_ROUTERS': [],
8900 'DATA_UPLOAD_MAX_MEMORY_SIZE': 2621440,
8901 'DATA_UPLOAD_MAX_NUMBER_FIELDS': 1000,
8902 'DATETIME_FORMAT': 'N j, Y, P',
8903 'DATETIME_INPUT_FORMATS': ['%Y-%m-%d %H:%M:%S',
8904 '%Y-%m-%d %H:%M:%S.%f',
8905 '%Y-%m-%d %H:%M',
8906 '%m/%d/%Y %H:%M:%S',
8907 '%m/%d/%Y %H:%M:%S.%f',
8908 '%m/%d/%Y %H:%M',
8909 '%m/%d/%y %H:%M:%S',
8910 '%m/%d/%y %H:%M:%S.%f',
8911 '%m/%d/%y %H:%M'],
8912 'DATE_FORMAT': 'N j, Y',
8913 'DATE_INPUT_FORMATS': ['%Y-%m-%d',
8914 '%m/%d/%Y',
8915 '%m/%d/%y',
8916 '%b %d %Y',
8917 '%b %d, %Y',
8918 '%d %b %Y',
8919 '%d %b, %Y',
8920 '%B %d %Y',
8921 '%B %d, %Y',
8922 '%d %B %Y',
8923 '%d %B, %Y'],
8924 'DB_ENGINE': 'django.db.backends.postgresql',
8925 'DB_HOST': 'domainprospector-prod-db.cloudsql-proxy',
8926 'DB_NAME': 'backlinkapp_db',
8927 'DB_PORT': '5432',
8928 'DB_PW': '61gh25edt6',
8929 'DB_USER': 'backlinkapp',
8930 'DEBUG': 1,
8931 'DEBUG_PROPAGATE_EXCEPTIONS': False,
8932 'DEBUG_TOOLBAR_CONFIG': {'SHOW_TOOLBAR_CALLBACK': <function <lambda> at 0x7f6adb2afd30>},
8933 'DECIMAL_SEPARATOR': '.',
8934 'DEFAULT_AUTO_FIELD': 'django.db.models.AutoField',
8935 'DEFAULT_CHARSET': 'utf-8',
8936 'DEFAULT_EXCEPTION_REPORTER': 'django.views.debug.ExceptionReporter',
8937 'DEFAULT_EXCEPTION_REPORTER_FILTER': 'django.views.debug.SafeExceptionReporterFilter',
8938 'DEFAULT_FILE_STORAGE': 'storages.backends.gcloud.GoogleCloudStorage',
8939 'DEFAULT_FROM_EMAIL': '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a4d3c1c6c9c5d7d0c1d6e4c8cbc7c5c8cccbd7d0">[email protected]</a>',
8940 'DEFAULT_HASHING_ALGORITHM': 'sha256',
8941 'DEFAULT_INDEX_TABLESPACE': '',
8942 'DEFAULT_TABLESPACE': '',
8943 'DISALLOWED_USER_AGENTS': [],
8944 'DJANGO_APPS': ['django.contrib.admin',
8945 'django.contrib.auth',
8946 'django.contrib.contenttypes',
8947 'django.contrib.sessions',
8948 'django.contrib.messages',
8949 'django.contrib.staticfiles',
8950 'django.contrib.humanize'],
8951 'EMAIL_BACKEND': 'django.core.mail.backends.smtp.EmailBackend',
8952 'EMAIL_HOST': 'localhost',
8953 'EMAIL_HOST_PASSWORD': '********************',
8954 'EMAIL_HOST_USER': '',
8955 'EMAIL_PORT': 25,
8956 'EMAIL_SSL_CERTFILE': None,
8957 'EMAIL_SSL_KEYFILE': '********************',
8958 'EMAIL_SUBJECT_PREFIX': '[Django] ',
8959 'EMAIL_TIMEOUT': None,
8960 'EMAIL_USE_LOCALTIME': False,
8961 'EMAIL_USE_SSL': False,
8962 'EMAIL_USE_TLS': False,
8963 'ENABLE_CELERY_PERIODIC_TASKS': 1,
8964 'ENV': 'PROD_',
8965 'FILE_UPLOAD_DIRECTORY_PERMISSIONS': None,
8966 'FILE_UPLOAD_HANDLERS': ['django.core.files.uploadhandler.MemoryFileUploadHandler',
8967 'django.core.files.uploadhandler.TemporaryFileUploadHandler'],
8968 'FILE_UPLOAD_MAX_MEMORY_SIZE': 2621440,
8969 'FILE_UPLOAD_PERMISSIONS': 420,
8970 'FILE_UPLOAD_TEMP_DIR': None,
8971 'FIRST_DAY_OF_WEEK': 0,
8972 'FIXTURE_DIRS': [],
8973 'FORCE_SCRIPT_NAME': None,
8974 'FORMAT_MODULE_PATH': None,
8975 'FORM_RENDERER': 'django.forms.renderers.DjangoTemplates',
8976 'GS_BUCKET_NAME': 'backlink-tool-screenshots',
8977 'GS_CREDENTIALS': <google.oauth2.service_account.Credentials object at 0x7f6adb27d7f0>,
8978 'HOST': 'backlink.searchatlas.com',
8979 'IGNORABLE_404_URLS': [],
8980 'INSTALLED_APPS': ['django.contrib.admin',
8981 'django.contrib.auth',
8982 'django.contrib.contenttypes',
8983 'django.contrib.sessions',
8984 'django.contrib.messages',
8985 'django.contrib.staticfiles',
8986 'django.contrib.humanize',
8987 'backlink.apps.BacklinkConfig',
8988 'rest_framework',
8989 'rest_framework_api_key',
8990 'django_extensions',
8991 'django_celery_beat',
8992 'django_celery_results',
8993 'django_json_widget',
8994 'django_object_actions',
8995 'drf_yasg',
8996 'sslserver',
8997 'debug_toolbar'],
8998 'INTERNAL_IPS': ['127.0.0.1'],
8999 'LANGUAGES': [('af', 'Afrikaans'),
9000 ('ar', 'Arabic'),
9001 ('ar-dz', 'Algerian Arabic'),
9002 ('ast', 'Asturian'),
9003 ('az', 'Azerbaijani'),
9004 ('bg', 'Bulgarian'),
9005 ('be', 'Belarusian'),
9006 ('bn', 'Bengali'),
9007 ('br', 'Breton'),
9008 ('bs', 'Bosnian'),
9009 ('ca', 'Catalan'),
9010 ('cs', 'Czech'),
9011 ('cy', 'Welsh'),
9012 ('da', 'Danish'),
9013 ('de', 'German'),
9014 ('dsb', 'Lower Sorbian'),
9015 ('el', 'Greek'),
9016 ('en', 'English'),
9017 ('en-au', 'Australian English'),
9018 ('en-gb', 'British English'),
9019 ('eo', 'Esperanto'),
9020 ('es', 'Spanish'),
9021 ('es-ar', 'Argentinian Spanish'),
9022 ('es-co', 'Colombian Spanish'),
9023 ('es-mx', 'Mexican Spanish'),
9024 ('es-ni', 'Nicaraguan Spanish'),
9025 ('es-ve', 'Venezuelan Spanish'),
9026 ('et', 'Estonian'),
9027 ('eu', 'Basque'),
9028 ('fa', 'Persian'),
9029 ('fi', 'Finnish'),
9030 ('fr', 'French'),
9031 ('fy', 'Frisian'),
9032 ('ga', 'Irish'),
9033 ('gd', 'Scottish Gaelic'),
9034 ('gl', 'Galician'),
9035 ('he', 'Hebrew'),
9036 ('hi', 'Hindi'),
9037 ('hr', 'Croatian'),
9038 ('hsb', 'Upper Sorbian'),
9039 ('hu', 'Hungarian'),
9040 ('hy', 'Armenian'),
9041 ('ia', 'Interlingua'),
9042 ('id', 'Indonesian'),
9043 ('ig', 'Igbo'),
9044 ('io', 'Ido'),
9045 ('is', 'Icelandic'),
9046 ('it', 'Italian'),
9047 ('ja', 'Japanese'),
9048 ('ka', 'Georgian'),
9049 ('kab', 'Kabyle'),
9050 ('kk', 'Kazakh'),
9051 ('km', 'Khmer'),
9052 ('kn', 'Kannada'),
9053 ('ko', 'Korean'),
9054 ('ky', 'Kyrgyz'),
9055 ('lb', 'Luxembourgish'),
9056 ('lt', 'Lithuanian'),
9057 ('lv', 'Latvian'),
9058 ('mk', 'Macedonian'),
9059 ('ml', 'Malayalam'),
9060 ('mn', 'Mongolian'),
9061 ('mr', 'Marathi'),
9062 ('my', 'Burmese'),
9063 ('nb', 'Norwegian Bokmål'),
9064 ('ne', 'Nepali'),
9065 ('nl', 'Dutch'),
9066 ('nn', 'Norwegian Nynorsk'),
9067 ('os', 'Ossetic'),
9068 ('pa', 'Punjabi'),
9069 ('pl', 'Polish'),
9070 ('pt', 'Portuguese'),
9071 ('pt-br', 'Brazilian Portuguese'),
9072 ('ro', 'Romanian'),
9073 ('ru', 'Russian'),
9074 ('sk', 'Slovak'),
9075 ('sl', 'Slovenian'),
9076 ('sq', 'Albanian'),
9077 ('sr', 'Serbian'),
9078 ('sr-latn', 'Serbian Latin'),
9079 ('sv', 'Swedish'),
9080 ('sw', 'Swahili'),
9081 ('ta', 'Tamil'),
9082 ('te', 'Telugu'),
9083 ('tg', 'Tajik'),
9084 ('th', 'Thai'),
9085 ('tk', 'Turkmen'),
9086 ('tr', 'Turkish'),
9087 ('tt', 'Tatar'),
9088 ('udm', 'Udmurt'),
9089 ('uk', 'Ukrainian'),
9090 ('ur', 'Urdu'),
9091 ('uz', 'Uzbek'),
9092 ('vi', 'Vietnamese'),
9093 ('zh-hans', 'Simplified Chinese'),
9094 ('zh-hant', 'Traditional Chinese')],
9095 'LANGUAGES_BIDI': ['he', 'ar', 'ar-dz', 'fa', 'ur'],
9096 'LANGUAGE_CODE': 'en-us',
9097 'LANGUAGE_COOKIE_AGE': None,
9098 'LANGUAGE_COOKIE_DOMAIN': None,
9099 'LANGUAGE_COOKIE_HTTPONLY': False,
9100 'LANGUAGE_COOKIE_NAME': 'django_language',
9101 'LANGUAGE_COOKIE_PATH': '/',
9102 'LANGUAGE_COOKIE_SAMESITE': None,
9103 'LANGUAGE_COOKIE_SECURE': False,
9104 'LINKGRAPHIO_EMAIL_CONNECTION': {'host': 'email-smtp.us-east-1.amazonaws.com',
9105 'password': '********************',
9106 'port': 587,
9107 'sender': '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7e1c1f1d15121710153e12171015190c1f0e16501711">[email protected]</a>',
9108 'use_tls': True,
9109 'username': ''},
9110 'LOCALE_PATHS': [],
9111 'LOGGING': {'disable_existing_loggers': False,
9112 'formatters': {'timestamp': {'format': '{asctime} '
9113 '{levelname} '
9114 '{module} '
9115 '{message}',
9116 'style': '{'}},
9117 'handlers': {'console': {'class': 'logging.StreamHandler',
9118 'formatter': 'timestamp'}},
9119 'root': {'handlers': ['console'], 'level': 'DEBUG'},
9120 'version': 1},
9121 'LOGGING_CONFIG': 'logging.config.dictConfig',
9122 'LOGIN_REDIRECT_URL': '/accounts/profile/',
9123 'LOGIN_URL': '/accounts/login/',
9124 'LOGOUT_REDIRECT_URL': None,
9125 'MAIL_NOTIFICATIONS_ENABLED': False,
9126 'MANAGERS': [],
9127 'MEDIA_ROOT': '/usr/src/app/media',
9128 'MEDIA_URL': '/media/',
9129 'MESSAGE_STORAGE': 'django.contrib.messages.storage.fallback.FallbackStorage',
9130 'MIDDLEWARE': ['debug_toolbar.middleware.DebugToolbarMiddleware',
9131 'django.middleware.security.SecurityMiddleware',
9132 'django.contrib.sessions.middleware.SessionMiddleware',
9133 'corsheaders.middleware.CorsMiddleware',
9134 'django.middleware.common.CommonMiddleware',
9135 'django.middleware.csrf.CsrfViewMiddleware',
9136 'django.contrib.auth.middleware.AuthenticationMiddleware',
9137 'django.contrib.messages.middleware.MessageMiddleware',
9138 'django.middleware.clickjacking.XFrameOptionsMiddleware'],
9139 'MIGRATION_MODULES': {},
9140 'MONTH_DAY_FORMAT': 'F j',
9141 'NUMBER_GROUPING': 0,
9142 'PASSWORD_HASHERS': '********************',
9143 'PASSWORD_RESET_TIMEOUT': '********************',
9144 'PASSWORD_RESET_TIMEOUT_DAYS': '********************',
9145 'PREPEND_WWW': False,
9146 'REST_FRAMEWORK': {'DEFAULT_AUTHENTICATION_CLASSES': (),
9147 'DEFAULT_PERMISSION_CLASSES': (),
9148 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
9149 'STRICT_JSON': False},
9150 'ROOT_URLCONF': 'app.urls',
9151 'SECRET_KEY': '********************',
9152 'SECURE_BROWSER_XSS_FILTER': False,
9153 'SECURE_CONTENT_TYPE_NOSNIFF': True,
9154 'SECURE_HSTS_INCLUDE_SUBDOMAINS': False,
9155 'SECURE_HSTS_PRELOAD': False,
9156 'SECURE_HSTS_SECONDS': 0,
9157 'SECURE_PROXY_SSL_HEADER': ('HTTP_X_FORWARDED_PROTO', 'https'),
9158 'SECURE_REDIRECT_EXEMPT': [],
9159 'SECURE_REFERRER_POLICY': 'same-origin',
9160 'SECURE_SSL_HOST': None,
9161 'SECURE_SSL_REDIRECT': False,
9162 'SERVER_EMAIL': '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d4a6bbbba094b8bbb7b5b8bcbba7a0">[email protected]</a>',
9163 'SESSION_CACHE_ALIAS': 'default',
9164 'SESSION_COOKIE_AGE': 1209600,
9165 'SESSION_COOKIE_DOMAIN': None,
9166 'SESSION_COOKIE_HTTPONLY': True,
9167 'SESSION_COOKIE_NAME': 'sessionid',
9168 'SESSION_COOKIE_PATH': '/',
9169 'SESSION_COOKIE_SAMESITE': None,
9170 'SESSION_COOKIE_SECURE': False,
9171 'SESSION_ENGINE': 'django.contrib.sessions.backends.db',
9172 'SESSION_EXPIRE_AT_BROWSER_CLOSE': False,
9173 'SESSION_FILE_PATH': None,
9174 'SESSION_SAVE_EVERY_REQUEST': False,
9175 'SESSION_SERIALIZER': 'django.contrib.sessions.serializers.JSONSerializer',
9176 'SETTINGS_MODULE': 'app.settings',
9177 'SHORT_DATETIME_FORMAT': 'm/d/Y P',
9178 'SHORT_DATE_FORMAT': 'm/d/Y',
9179 'SIGNING_BACKEND': 'django.core.signing.TimestampSigner',
9180 'SILENCED_SYSTEM_CHECKS': [],
9181 'SIMPLE_JWT': {'ALGORITHM': 'HS256',
9182 'AUTH_HEADER_TYPES': ['Bearer'],
9183 'AUTH_TOKEN_CLASSES': '********************',
9184 'COOKIE_KEY': '********************',
9185 'QUERYPARAM_KEY': '********************',
9186 'SIGNING_KEY': '********************',
9187 'VERIFYING_KEY': '********************'},
9188 'SLACK_MIGHTYSCRIBES_API_TOKEN': '********************',
9189 'SLACK_MOONROCK_API_TOKEN': '********************',
9190 'SLACK_SEARCHATLAS_API_TOKEN': '********************',
9191 'SLACK_SEL_WEBHOOK': 'https://hooks.slack.com/services/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',
9192 'SLACK_WELLAUTHORED_API_TOKEN': '********************',
9193 'STATICFILES_DIRS': ('/usr/src/app/static/',),
9194 'STATICFILES_FINDERS': ('django.contrib.staticfiles.finders.FileSystemFinder',
9195 'django.contrib.staticfiles.finders.AppDirectoriesFinder'),
9196 'STATICFILES_STORAGE': 'django.contrib.staticfiles.storage.StaticFilesStorage',
9197 'STATIC_ROOT': '/usr/src/app/_static',
9198 'STATIC_SOURCE': '/usr/src/app/static/',
9199 'STATIC_URL': '/static/',
9200 'TEMPLATES': [{'APP_DIRS': True,
9201 'BACKEND': 'django.template.backends.django.DjangoTemplates',
9202 'DIRS': ['templates/'],
9203 'OPTIONS': {'context_processors': ['django.template.context_processors.debug',
9204 'django.template.context_processors.request',
9205 'django.contrib.auth.context_processors.auth',
9206 'django.contrib.messages.context_processors.messages']}}],
9207 'TEST_MODE': False,
9208 'TEST_NON_SERIALIZED_APPS': [],
9209 'TEST_RUNNER': 'backlink.tests.runner.LinkGraphTestRunner',
9210 'THIRD_PARTY_APPS': ['rest_framework',
9211 'rest_framework_api_key',
9212 'django_extensions',
9213 'django_celery_beat',
9214 'django_celery_results',
9215 'django_json_widget',
9216 'django_object_actions',
9217 'drf_yasg'],
9218 'THOUSAND_SEPARATOR': ',',
9219 'TIME_FORMAT': 'P',
9220 'TIME_INPUT_FORMATS': ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'],
9221 'TIME_ZONE': 'UTC',
9222 'TOXICITY_INPUT_BUCKET': 'backlink-toxicity-automl-tables-staging',
9223 'TOXICITY_MODEL_DISPLAY_NAME': 'backlink_toxicity_20210317080419',
9224 'TOXICITY_OUTPUT_BUCKET': 'backlink-toxicity-predictions',
9225 'TOXICITY_PROJECT': 'backlink-toxicity',
9226 'TOXICITY_REGION': 'us-central1',
9227 'TOXICITY_SERVICE_ACCOUNT': 'vendor/google/credentials/backlink-toxicity-ade825466bb8.json',
9228 'USE_I18N': True,
9229 'USE_L10N': True,
9230 'USE_PRODUCTION_DBS': 1,
9231 'USE_THOUSAND_SEPARATOR': False,
9232 'USE_TZ': True,
9233 'USE_X_FORWARDED_HOST': False,
9234 'USE_X_FORWARDED_PORT': False,
9235 'WSGI_APPLICATION': 'app.wsgi.application',
9236 'X_FRAME_OPTIONS': 'DENY',
9237 'YEAR_MONTH_FORMAT': 'F Y'},
9238 'sys_executable': '/usr/local/bin/python',
9239 'sys_path': ['/usr/src/app',
9240 '/usr/local/bin',
9241 '/usr/src/app',
9242 '/usr/local/lib/python38.zip',
9243 '/usr/local/lib/python3.8',
9244 '/usr/local/lib/python3.8/lib-dynload',
9245 '/usr/local/lib/python3.8/site-packages'],
9246 'sys_version_info': '3.8.9',
9247 'template_does_not_exist': False,
9248 'template_info': None,
9249 'unicode_hint': '',
9250 'user_str': '17503'}</code>
9251 </details>
9252 </dd>
9253
9254
9255 </dl>
9256
9257
9258<h4>Context processors</h4>
9259
9260 <p>None</p>
9261
9262</div>
9263
9264 </div>
9265 </div>
9266
9267
9268
9269
9270
9271
9272 <div id="CachePanel" class="djdt-panelContent djdt-hidden">
9273 <div class="djDebugPanelTitle">
9274 <button type="button" class="djDebugClose">Ã</button>
9275 <h3>Cache calls from 1 backend</h3>
9276 </div>
9277 <div class="djDebugPanelContent">
9278
9279 <div class="djdt-scroll">
9280<h4>Summary</h4>
9281<table>
9282 <thead>
9283 <tr>
9284 <th>Total calls</th>
9285 <th>Total time</th>
9286 <th>Cache hits</th>
9287 <th>Cache misses</th>
9288 </tr>
9289 </thead>
9290 <tbody>
9291 <tr>
9292 <td>0</td>
9293 <td>0 ms</td>
9294 <td>0</td>
9295 <td>0</td>
9296 </tr>
9297 </tbody>
9298</table>
9299<h4>Commands</h4>
9300<table>
9301 <thead>
9302 <tr>
9303
9304 <th>add</th>
9305
9306 <th>get</th>
9307
9308 <th>set</th>
9309
9310 <th>touch</th>
9311
9312 <th>delete</th>
9313
9314 <th>clear</th>
9315
9316 <th>get_many</th>
9317
9318 <th>set_many</th>
9319
9320 <th>delete_many</th>
9321
9322 <th>has_key</th>
9323
9324 <th>incr</th>
9325
9326 <th>decr</th>
9327
9328 <th>incr_version</th>
9329
9330 <th>decr_version</th>
9331
9332 </tr>
9333 </thead>
9334 <tbody>
9335 <tr>
9336
9337 <td>0</td>
9338
9339 <td>0</td>
9340
9341 <td>0</td>
9342
9343 <td>0</td>
9344
9345 <td>0</td>
9346
9347 <td>0</td>
9348
9349 <td>0</td>
9350
9351 <td>0</td>
9352
9353 <td>0</td>
9354
9355 <td>0</td>
9356
9357 <td>0</td>
9358
9359 <td>0</td>
9360
9361 <td>0</td>
9362
9363 <td>0</td>
9364
9365 </tr>
9366 </tbody>
9367</table>
9368
9369</div>
9370
9371 </div>
9372 </div>
9373
9374
9375
9376
9377
9378
9379 <div id="SignalsPanel" class="djdt-panelContent djdt-hidden">
9380 <div class="djDebugPanelTitle">
9381 <button type="button" class="djDebugClose">Ã</button>
9382 <h3>Signals</h3>
9383 </div>
9384 <div class="djDebugPanelContent">
9385
9386 <div class="djdt-scroll">
9387<table>
9388 <thead>
9389 <tr>
9390 <th>Signal</th>
9391 <th>Receivers</th>
9392 </tr>
9393 </thead>
9394 <tbody>
9395
9396 <tr>
9397 <td>class_prepared</td>
9398 <td></td>
9399 </tr>
9400
9401 <tr>
9402 <td>connection_created</td>
9403 <td></td>
9404 </tr>
9405
9406 <tr>
9407 <td>got_request_exception</td>
9408 <td>_got_request_exception</td>
9409 </tr>
9410
9411 <tr>
9412 <td>m2m_changed</td>
9413 <td></td>
9414 </tr>
9415
9416 <tr>
9417 <td>post_delete</td>
9418 <td>ModelBase.update_changed, ModelBase.update_changed, ModelBase.update_changed</td>
9419 </tr>
9420
9421 <tr>
9422 <td>post_init</td>
9423 <td>ImageField.update_dimension_fields</td>
9424 </tr>
9425
9426 <tr>
9427 <td>post_migrate</td>
9428 <td>create_permissions, create_contenttypes</td>
9429 </tr>
9430
9431 <tr>
9432 <td>post_save</td>
9433 <td>ModelBase.update_changed, ModelBase.update_changed, ModelBase.update_changed, ModelBase.update_changed</td>
9434 </tr>
9435
9436 <tr>
9437 <td>pre_delete</td>
9438 <td>ModelBase.changed, ModelBase.update_changed</td>
9439 </tr>
9440
9441 <tr>
9442 <td>pre_init</td>
9443 <td></td>
9444 </tr>
9445
9446 <tr>
9447 <td>pre_migrate</td>
9448 <td>inject_rename_contenttypes_operations</td>
9449 </tr>
9450
9451 <tr>
9452 <td>pre_save</td>
9453 <td>ModelBase.changed</td>
9454 </tr>
9455
9456 <tr>
9457 <td>request_finished</td>
9458 <td>close_old_connections, close_caches, reset_urlconf</td>
9459 </tr>
9460
9461 <tr>
9462 <td>request_started</td>
9463 <td>reset_queries, close_old_connections</td>
9464 </tr>
9465
9466 <tr>
9467 <td>setting_changed</td>
9468 <td>reset_cache, reset_hashers, clear_cache_handlers, update_installed_apps, update_connections_time_zone, clear_routers_cache, reset_template_engines, clear_serializers_cache, language_changed, localize_settings_changed, file_storage_changed, complex_setting_changed, root_urlconf_changed, static_storage_changed, static_finders_changed, auth_password_validators_changed, user_model_swapped, reload_api_settings, reload_api_settings, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, StaticFilesStorage._clear_cached_properties</td>
9469 </tr>
9470
9471 </tbody>
9472</table>
9473</div>
9474
9475 </div>
9476 </div>
9477
9478
9479
9480
9481
9482
9483 <div id="LoggingPanel" class="djdt-panelContent djdt-hidden">
9484 <div class="djDebugPanelTitle">
9485 <button type="button" class="djDebugClose">Ã</button>
9486 <h3>Log messages</h3>
9487 </div>
9488 <div class="djDebugPanelContent">
9489
9490 <div class="djdt-scroll">
9491
9492 <table>
9493 <thead>
9494 <tr>
9495 <th>Level</th>
9496 <th>Time</th>
9497 <th>Channel</th>
9498 <th>Message</th>
9499 <th>Location</th>
9500 </tr>
9501 </thead>
9502 <tbody>
9503
9504 <tr>
9505 <td>DEBUG</td>
9506 <td>05:26:34 04/15/2021</td>
9507 <td>backlink.auth</td>
9508 <td>jwt_in_header has length: 415 <br>jwt_in_queryparams has length: 0jwt_in_cookie has length: 0</td>
9509 <td>/usr/src/app/backlink/auth.py:33</td>
9510 </tr>
9511
9512 <tr>
9513 <td>DEBUG</td>
9514 <td>05:26:34 04/15/2021</td>
9515 <td>backlink.auth</td>
9516 <td>JWT Token has length 415</td>
9517 <td>/usr/src/app/backlink/auth.py:42</td>
9518 </tr>
9519
9520 <tr>
9521 <td>DEBUG</td>
9522 <td>05:26:34 04/15/2021</td>
9523 <td>backlink.auth</td>
9524 <td>JWT Token decoded and validated.</td>
9525 <td>/usr/src/app/backlink/auth.py:45</td>
9526 </tr>
9527
9528 <tr>
9529 <td>DEBUG</td>
9530 <td>05:26:34 04/15/2021</td>
9531 <td>backlink.auth</td>
9532 <td>Bearer token added to cookie.</td>
9533 <td>/usr/src/app/backlink/auth.py:53</td>
9534 </tr>
9535
9536 <tr>
9537 <td>DEBUG</td>
9538 <td>05:26:34 04/15/2021</td>
9539 <td>backlink.auth</td>
9540 <td>JWT Authentication returned ExternalUser 17503. Was Created: False</td>
9541 <td>/usr/src/app/backlink/auth.py:104</td>
9542 </tr>
9543
9544 <tr>
9545 <td>INFO</td>
9546 <td>05:26:34 04/15/2021</td>
9547 <td>backlink.api.v1.views</td>
9548 <td><QueryDict: {'websites': ['jackjones.com', 'jack-jones.ca', 'bestsellerclothing.com', 'jackjones.in', 'wikipedia.org', 'jakeandjones.com', 'jackandjones.com', 'amazon.com', 'instagram.com', 'apple.com']}></td>
9549 <td>/usr/src/app/backlink/api/v1/views.py:236</td>
9550 </tr>
9551
9552 <tr>
9553 <td>DEBUG</td>
9554 <td>05:26:34 04/15/2021</td>
9555 <td>utils.profiling</td>
9556 <td>(KeywordDifficultyAPI.get Stopwatch ) Started stopwatch.</td>
9557 <td>/usr/src/app/utils/profiling.py:46</td>
9558 </tr>
9559
9560 <tr>
9561 <td>DEBUG</td>
9562 <td>05:26:34 04/15/2021</td>
9563 <td>utils.profiling</td>
9564 <td>(KeywordDifficultyAPI.get Stopwatch ) Time Elapsed: 0.000187s Interval: GET WEBSITES</td>
9565 <td>/usr/src/app/utils/profiling.py:41</td>
9566 </tr>
9567
9568 <tr>
9569 <td>DEBUG</td>
9570 <td>05:26:34 04/15/2021</td>
9571 <td>utils.profiling</td>
9572 <td>(KeywordDifficultyAPI.get Stopwatch ) Time Elapsed: 0.000152s Interval: WEBSITES GET_OR_CREATE</td>
9573 <td>/usr/src/app/utils/profiling.py:41</td>
9574 </tr>
9575
9576 <tr>
9577 <td>DEBUG</td>
9578 <td>05:26:34 04/15/2021</td>
9579 <td>asyncio</td>
9580 <td>Using selector: EpollSelector</td>
9581 <td>/usr/local/lib/python3.8/asyncio/selector_events.py:59</td>
9582 </tr>
9583
9584 <tr>
9585 <td>ERROR</td>
9586 <td>05:26:34 04/15/2021</td>
9587 <td>django.request</td>
9588 <td>Internal Server Error: /backlink/keyword-difficulty/</td>
9589 <td>/usr/local/lib/python3.8/site-packages/django/utils/log.py:224</td>
9590 </tr>
9591
9592 </tbody>
9593 </table>
9594
9595</div>
9596
9597 </div>
9598 </div>
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612 <div id="djDebugWindow" class="djdt-panelContent djdt-hidden"></div>
9613</div>
9614<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body>
9615</html>