اذهب إلى المحتوى

السؤال

نشر

لدي مشروع فلاسك Flask، وقمت مؤخرًا بتحديث التطبيق وعندما حاولت تشغيله ظهر الخطأ التالي:

Traceback (most recent call last):
  File "/home/mohssen/web-projects/app.py", line 11, in <module>
    app.run(host = os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT',8080)))
  File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 772, in run
    run_simple(host, port, self, **options)
  File "/usr/local/lib/python3.7/dist-packages/werkzeug/serving.py", line 687, in run_simple
    inner()
  File "/usr/local/lib/python3.7/dist-packages/werkzeug/serving.py", line 653, in inner
    fd=fd).serve_forever()
  File "/usr/local/lib/python3.7/dist-packages/werkzeug/serving.py", line 557, in make_server
    passthrough_errors, ssl_context, fd=fd)
  File "/usr/local/lib/python3.7/dist-packages/werkzeug/serving.py", line 467, in __init__
    HTTPServer.__init__(self, (host, int(port)), handler)
  File "/usr/lib/python3.7/SocketServer.py", line 419, in __init__
    self.server_bind()
  File "/usr/lib/python3.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python3.7/SocketServer.py", line 430, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python3.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

أنا أقوم بتشغيل التطبيق من خلال السطر التالي:

app.run(host = os.getenv('IP', '0.0.0.0'), port=int(os.getenv('PORT',8080)))

قمت بتحديد العنوان 0.0.0.0 لكي أستطيع إستخدام التطبيق على الشبكة، ولكن حتى لو غيرت العنوان يظهر نفس الخطأ!

ما الذي يعنيه الخطأ Address already in use؟ وكيف يمكنني إصلاحه؟

Recommended Posts

  • 1
نشر (معدل)

الخطأ  Address already in use يظهر عادة لما يكون يكون المنفذ (Port) - في مثالك 8080 أو قيمة مسجلة داخل متغيرات النظام - مستخدمًا بالفعل من قبل بعض تطبيقات بايثون الأخرى أو أي تطبيق آخر.

لإصلاح الخطأ قُم باختيار منفذ آخر لتطبيقك:

app.run(host = os.getenv('IP', '0.0.0.0'), port=8088)# مثلا 8088

إذا كنت تريد رؤية البرنامج الذي يشغل هذا المنفذ استخدم الأمر: (لمستخدمي linux )

netstat -ntlp | grep 8080

والذي بدوره يقوم بالكشف عن التطبيق الذي يشغل المنفذ. مثلاً:

Proto Recv-Q Send-Q Local Address           Foreign Address         State           PID/Program name    
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      6599/python         

قم بإنهائه باستخدام

kill -9 PID
#أي
kill -9 6599

 

تم التعديل في بواسطة مسعود زاهي

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...