Eu tenho um aplicativo Heroku básico que funciona perfeitamente se eu não incluir from src.RtcTokenBuilder2 import RtcTokenBuilder, Role_Publisher, time no arquivo principal do meu aplicativo. Quero adicionar uma pasta, src, que contenha código para geração de token para Agora RTC. Para adicionar o código, basta baixar o código do Github no link abaixo e depois copiar e colar a pasta src em meu projeto python. A pasta src que preciso é encontrada "DynamicKey/AgoraDynamicKey/python3/src". Assim que tiver a pasta src no mesmo diretório, importo a geração do token usando a instrução import acima.
Agora eu faço git add AccessToken.py AccessToken2.py ChatTokenBuilder2.py DynamicKey.py DynamicKey2.py DynamicKey3.py DynamicKey4.py DynamicKey5.py Packer.py RtcTokenBuilder.py RtcTokenBuilder2.py RtmTokenBuilder.py RtmTokenBuilder2.py SignalingToken.py education_token_builder.py fpa_token_builder.py utilitários.py
Eu comprometo as adições e executo git push heroku master
Ao fazer isso o heroku git atualiza sem erros e diz que o site foi atualizado. Mas quando tento ver o token de exemplo que foi gerado, o site mostra um erro e diz para usar os logs do heroku para rastrear o bug. A saída dos logs é longa, mas inclui from src.RtcTokenBuilder2 import RtcTokenBuilder, Role_Publisher, time. ModuleNotFoundError: Nenhum módulo chamado 'src'
O que estou fazendo de errado ao adicionar a pasta src e tentar usá-la? Não há mais nada de errado com minha configuração porque tudo funciona bem sem a importação acima.
https://github.com/AgoraIO/Tools
hustlerserver.py
from flask import Flask, request
from src.RtcTokenBuilder2 import RtcTokenBuilder, Role_Publisher, time
app = Flask(__name__)
@app.route('/process_data', methods=['GET'])
def process_data():
x = int(request.args.get('x', 0))
y = request.args.get('y', 'default')
appId = "test"
appCertificate = "test"
expirationTimeInSeconds = 3600
channelName = y
uid = x
token = "random tok"
current_timestamp = int(time.time())
expired_ts = current_timestamp + expirationTimeInSeconds
token = RtcTokenBuilder.build_token_with_uid(appId, appCertificate, channelName, uid, Role_Publisher, token_expire=expired_ts, privilege_expire=expired_ts)
result = f'token is: {token}'
return f'<h1>{result}</h1>'
Perfil
web: gunicorn hustlerserver:app
Requisitos.txt
Flask==3.0.1
gunicorn==21.2.0
Jinja2==3.1.3
Certifique-se de que haja um
__init__.py
arquivo nosrc
diretório. Esse arquivo pode estar vazio, mas sua presença é o que torna um diretório um pacote Python.No seu
hustlerserver.py
, você está importando desrc.RtcTokenBuilder2
. Certifique-se de que este caminho esteja correto e que oRtcTokenBuilder2.py
arquivo exista dentro dosrc
diretório.Depois de fazer essas alterações, use
git add .
para adicionar todas as alterações, confirmá-las e, em seguida, enviar para o Heroku.