Ich habe vor Kurzem angefangen, error: [Errno 111] Connection refused
Fehlermeldungen von Benutzern zu erhalten http://yandex.com/bots
, die meine Website in der Produktion crawlen. Es macht mir nichts aus, dass sie die Site crawlen, aber ich möchte diese E-Mails lieber nicht erhalten.
Ich vermute, dass sie abgelehnt werden, weil sie http
einen Port verwenden 80
, während meine Website erfordert https
. In diesem Fall ist es gut, dass sie abgelehnt werden. Ich bin mir jedoch nicht sicher, warum ich diese Fehler erhalte (seit letzter Woche 4-5 Mal pro Tag).
Irgendwelche Ideen, wie man diese Fehler stoppen kann? Ich verwende Python 2.7, Heroku und Cloudflare.
Internal Server Error: /team/46/
Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/newrelic/hooks/framework_django.py", line 544, in wrapper
return wrapped(*args, **kwargs)
File "/app/wehealth/wehealth/utils.py", line 121, in __render_with
d = f(request, *args, **kwargs)
File "/app/wehealth/users/views.py", line 737, in team
team = get_group(team, team_id, team_key)
File "/app/wehealth/wehealth/utils.py", line 770, in get_group
group = get_group_goals(group)
File "/app/wehealth/wehealth/utils.py", line 786, in get_group_goals
createGoal2Group.delay(group['info'], g)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/task.py", line 453, in delay
return self.apply_async(args, kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/task.py", line 565, in apply_async
**dict(self._get_exec_options(), **options)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/base.py", line 354, in send_task
reply_to=reply_to or self.oid, **options
File "/app/.heroku/python/lib/python2.7/site-packages/celery/app/amqp.py", line 305, in publish_task
**kwargs
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/messaging.py", line 172, in publish
routing_key, mandatory, immediate, exchange, declare)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 470, in _ensured
interval_max)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 382, in ensure_connection
interval_start, interval_step, interval_max, callback)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/utils/__init__.py", line 246, in retry_over_time
return fun(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 250, in connect
return self.connection
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 756, in connection
self._connection = self._establish_connection()
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 711, in _establish_connection
conn = self.transport.establish_connection()
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 116, in establish_connection
conn = self.Connection(**opts)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/connection.py", line 165, in __init__
self.transport = self.Transport(host, connect_timeout, ssl)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/connection.py", line 186, in Transport
return create_transport(host, connect_timeout, ssl)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/transport.py", line 299, in create_transport
return TCPTransport(host, connect_timeout)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/transport.py", line 95, in __init__
raise socket.error(last_err)
error: [Errno 111] Connection refused
Request repr():
<WSGIRequest
path:/team/46/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{},
META:{u'CSRF_COOKIE': u'y8sR9HccmrzW8RaYDQwmalvKiRl2E6DK',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
'HTTP_CONNECTION': 'close',
'HTTP_CONNECT_TIME': '0',
'HTTP_FROM': '[email protected]',
'HTTP_HOST': 'wehealth.herokuapp.com',
'HTTP_TOTAL_ROUTE_TIME': '0',
'HTTP_USER_AGENT': 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)',
'HTTP_VIA': '1.1 vegur',
'HTTP_X_FORWARDED_FOR': '77.88.47.24, 10.33.252.175',
'HTTP_X_FORWARDED_PORT': '80',
'HTTP_X_FORWARDED_PROTO': 'http',
'HTTP_X_REQUEST_ID': 'a0a5b07f-b6be-40ec-b04a-81690188d0b4',
'HTTP_X_REQUEST_START': '1558372953380',
'PATH_INFO': u'/team/46/',
'QUERY_STRING': '',
'REMOTE_ADDR': 'localhost',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': u'',
'SERVER_NAME': 'unix',
'SERVER_PORT': '/tmp/nginx.socket',
'SERVER_PROTOCOL': 'HTTP/1.0',
'SERVER_SOFTWARE': 'waitress',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7fc4b5d041e0>,
'wsgi.file_wrapper': <class 'waitress.buffers.ReadOnlyFileBasedBuffer'>,
'wsgi.input': <newrelic.api.wsgi_application._WSGIInputWrapper object at 0x7fc4857e7310>,
'wsgi.multiprocess': False,
'wsgi.multithread': True,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
AKTUALISIEREN Da es so aussieht, als ob meine eigene App den Fehler verursacht, ist hier der Code in der asynchronen Aufgabe, der mit dem Fehler verknüpft ist:
@shared_task
def createGoal2Group(group, goal):
# "Create a Goal2Group link if user completes goal for first time"
goal2group = Goal2Group.objects.get_or_create(group=group, goal=goal)
Antwort1
Nein, diese Dinge funktionieren in die entgegengesetzte Richtung, als Sie sich vorstellen. Die einzige Zeit, in der Sie "Verbindung abgelehnt" sehen, ist, wennDumit einem anderen Server verbinden.
(Wenn Ihr Server keine HTTP-Verbindungen akzeptiert, dannKunden(also Yandex-Bots) würden vom Server die Fehlermeldung „Verbindung verweigert“ erhalten –nichtIhre Webanwendung. Außerdem kümmert sich die Webanwendung nicht einmal um Verbindungen – das ist die Aufgabe der Heroku-Webserver.)
Schauen Sie sich Ihren Python-Stacktrace genauer an: Er geht vom wehealth.utils.get_group()
asynchronen Task-Paket „celery“ zum Messaging-Client „amqp“, der schließlich einen Fehler aus amqp.transport heraus meldet. Mit anderen Worten:Ihre App kann den AMQP-Server nicht erreichen.