mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
* [wip] bridge python and c# and bring in rank torrent name * Container restores package now Includes two dev scripts to install the python packages locally for debugging purposes. * Introduce slightly turned title matching scoring, by making it length aware this should help with sequels such as Terminator 2, vs Terminator etc * Version bump Also fixes postgres healthcheck so that it utilises the user from the stack.env file
49 lines
1.4 KiB
C#
49 lines
1.4 KiB
C#
namespace SharedContracts.Python;
|
|
|
|
public class PythonEngineService(ILogger<PythonEngineService> logger) : IHostedService
|
|
{
|
|
private IntPtr _mainThreadState;
|
|
private bool _isInitialized;
|
|
|
|
public Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
if (_isInitialized)
|
|
{
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
try
|
|
{
|
|
var pythonDllEnv = Environment.GetEnvironmentVariable("PYTHONNET_PYDLL");
|
|
|
|
if (string.IsNullOrWhiteSpace(pythonDllEnv))
|
|
{
|
|
logger.LogWarning("PYTHONNET_PYDLL env is not set. Exiting Application");
|
|
Environment.Exit(1);
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
Runtime.PythonDLL = pythonDllEnv;
|
|
PythonEngine.Initialize();
|
|
_mainThreadState = PythonEngine.BeginAllowThreads();
|
|
|
|
_isInitialized = true;
|
|
logger.LogInformation("Python engine initialized");
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
logger.LogWarning(e, "Failed to initialize Python engine");
|
|
Environment.Exit(1);
|
|
}
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public Task StopAsync(CancellationToken cancellationToken)
|
|
{
|
|
PythonEngine.EndAllowThreads(_mainThreadState);
|
|
PythonEngine.Shutdown();
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
} |