Ошибка «контекст уже установлен», возникающая после импорта написанной программы Sanic в другую программу.Python

Программы на Python
Anonymous
Ошибка «контекст уже установлен», возникающая после импорта написанной программы Sanic в другую программу.

Сообщение Anonymous »

Здесь я должен уточнить, что английский не является моим родным языком. Если есть какие-либо грамматические ошибки, пожалуйста, простите меня.
  • Версия Python: 3.10
  • Версия Sanic-Cors: 2.2 .0
  • Версия Sanic: 24.6.0
  • ОС: Win 11
Я извлек только простейшую реализацию, но она по-прежнему приводит к ошибке выполнения. Ниже приводится подробная информация.
Я пытался запустить api.py напрямую, ошибок не возникло. . Когда я запускал main.py напрямую, произошла ошибка:

Код: Выделить всё

Main  2024-08-15 21:58:44 +0800 INFO: Sanic v24.6.0
Main  2024-08-15 21:58:44 +0800 INFO: Goin' Fast @ http://127.0.0.1:5050
Main  2024-08-15 21:58:44 +0800 INFO: app: ip
Main  2024-08-15 21:58:44 +0800 INFO: mode: production, single worker
Main  2024-08-15 21:58:44 +0800 INFO: server: sanic, HTTP/1.1
Main  2024-08-15 21:58:44 +0800 INFO: python: 3.12.4
Main  2024-08-15 21:58:44 +0800 INFO: platform: Windows-11-10.0.22631-SP0
Main  2024-08-15 21:58:44 +0800 INFO: packages: sanic-routing==23.12.0
Traceback (most recent call last):
File "", line 1, in 
File "xxx\Python\Python312\Lib\multiprocessing\spawn.py", line 122, in spawn_main
exitcode = _main(fd, parent_sentinel)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "xxx\Python\Python312\Lib\multiprocessing\spawn.py", line 131, in _main
prepare(preparation_data)
File "xxx\Python\Python312\Lib\multiprocessing\spawn.py", line 246, in prepare
_fixup_main_from_path(data['init_main_from_path'])
File "xxx \Python\Python312\Lib\multiprocessing\spawn.py", line 297, in _fixup_main_from_path
main_content = runpy.run_path(main_path,
^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 286, in run_path
File "", line 98, in _run_module_code
File "", line 88, in _run_code
File "xxx\test\main.py", line 3, in 
api.start_server()
File "xxx\test\api.py", line 16, in start_server
app.run(host="127.0.0.1", port=5050)
File "xxx\Python\Python312\Lib\site-packages\sanic\mixins\startup.py", line 291, in run
serve(primary=self)  # type: ignore
^^^^^^^^^^^^^^^^^^^
File "xxx\Python\Python312\Lib\site-packages\sanic\mixins\startup.py", line 1003, in serve
cls._set_startup_method()
File "xxx\Python\Python312\Lib\site-packages\sanic\mixins\startup.py", line 932, in _set_startup_method
set_start_method(method, force=cls.test_mode)
File "xxx\Python\Python312\Lib\multiprocessing\context.py", line 247, in set_start_method
raise RuntimeError('context has already been set')
RuntimeError: context has already been set
Это первый файл кода (api.py):

Код: Выделить всё

# api.py
from sanic import Sanic, json
from sanic_cors import CORS

app = Sanic("ip")
CORS(app)

@app.route("/get_proxy")
async def ip_api(request):
ip = "XXXXXX"
return json({"ip": ip})

def start_server():
app.run(host="127.0.0.1", port=5050)

if __name__ == '__main__':
start_server()
Второй файл Python (main.py):

Код: Выделить всё

# main.py
import api

api.start_server()
Я догадался, что по какой-то причине запустилась проверка основного модуля, поэтому удалил этот код, но это ничего не изменило.


Подробнее здесь: https://stackoverflow.com/questions/788 ... -written-s

Вернуться в «Python»