не могу запустить функцию, потому что сигнал работает только в основном потоке основного интерпретатора?
Я пытаюсь создать API с помощью Flask. Если конечная точка /register/string:token получена и токен находится в определенном списке, должна быть выполнена функция register_user(username) . Эта функция отправляет команду на другой сервер по протоколу rcon. Однако, как только функция вызывается, я получаю следующую ошибку: ValueError: signal работает только в основном потоке основного интерпретатора . Как я могу решить проблему? Или как я могу запустить функцию в основном потоке?
Мой код выглядит примерно так (Примечание: скрипт отлично работает в Windows):
from flask import Flask, send_file
from mcrcon import MCRcon as rcon
import configparser
api = Flask(__name__)
# @api.route('/register/<string:token>', methods=['GET'])
def register(token):
cache = utils.load_cache()
if token in list(cache['register_tokens'].keys()):
utils.register_user(username=cache['register_tokens'][token]) # problem!
del cache['register_tokens'][token]
utils.update_cache(obj=cache)
return {'status':'registration successful'}
else:
return {'status':'registration failed'}
class utils:
@staticmethod
def load_cache(file='../cache.pkl'):
...
@staticmethod
def update_cache(obj, file='../cache.pkl'):
...
@staticmethod
def clear_cache():
...
@staticmethod
def register_user(username):
with rcon(config['global']['server_ip'], config['global']['server_rcon_secret']) as console:
r = console.command(...)
console.disconnect()
if __name__ == '__main__':
config = configparser.ConfigParser()
config.read('../config.conf')
if bool(config['discordbot.py']['enable'])==True:
api.add_url_rule('/register/<string:token>', 'register', register)
api.run(host=config['global']['server_ip'], debug=False, use_reloader=False)