Python Azure函数在本地运行,但不';在Docker容器构建并在本地运行之后,不要做任何事情

Python Azure函数在本地运行,但不';在Docker容器构建并在本地运行之后,不要做任何事情,python,azure,docker,azure-functions,containers,Python,Azure,Docker,Azure Functions,Containers,我有一个Azure函数,带有自定义导入的python模块,当我在目录中使用func start时,它可以正确运行。但是,下一步是让它在Docker容器中本地运行。在构建并运行()之后,什么也没有发生,我得到以下输出: info: Host.Triggers.Warmup[0] Initializing Warmup Extension. info: Host.Startup[503] Initializing Host. OperationId: '9711d195-2a

我有一个Azure函数,带有自定义导入的python模块,当我在目录中使用
func start
时,它可以正确运行。但是,下一步是让它在
Docker
容器中本地运行。在构建并运行()之后,什么也没有发生,我得到以下输出:

info: Host.Triggers.Warmup[0]
      Initializing Warmup Extension.
info: Host.Startup[503]
      Initializing Host. OperationId: '9711d195-2ab7-4b93-8c53-dd577b6b70d5'.
info: Host.Startup[504]
      Host initialization: ConsecutiveErrors=0, StartupCount=1, OperationId=9711d195-2ab7-4b93-8c53-dd577b6b70d5
info: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
      LoggerFilterOptions
      {
        "MinLevel": "None",
        "Rules": [
          {
            "ProviderName": null,
            "CategoryName": null,
            "LogLevel": null,
            "Filter": "<AddFilter>b__0"
          },
          {
            "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
            "CategoryName": null,
            "LogLevel": "None",
            "Filter": null
          },
          {
            "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
            "CategoryName": null,
            "LogLevel": null,
            "Filter": "<AddFilter>b__0"
          }
        ]
      }
info: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
      FunctionResultAggregatorOptions
      {
        "BatchSize": 1000,
        "FlushTimeout": "00:00:30",
        "IsEnabled": true
      }
info: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
      SingletonOptions
      {
        "LockPeriod": "00:00:15",
        "ListenerLockPeriod": "00:01:00",
        "LockAcquisitionTimeout": "10675199.02:48:05.4775807",
        "LockAcquisitionPollingInterval": "00:00:05",
        "ListenerLockRecoveryPollingInterval": "00:01:00"
      }
info: Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService[0]
      HttpOptions
      {
        "DynamicThrottlesEnabled": false,
        "MaxConcurrentRequests": -1,
        "MaxOutstandingRequests": -1,
        "RoutePrefix": "api"
      }
info: Microsoft.Azure.WebJobs.Hosting.JobHostService[0]
      Starting JobHost
info: Host.Startup[401]
      Starting Host (HostId=c8cdf3a0c1a6-2137340777, InstanceId=c64a8e95-4ded-4a90-ac41-461d9223ed24, Version=3.0.15417.0, ProcessId=1, AppDomainId=1, InDebugMode=False, InDiagnosticMode=False, FunctionsExtensionVersion=(null))
info: Host.Startup[314]
      Loading functions metadata
info: Host.Startup[315]
      1 functions loaded
info: Host.Startup[0]
      Generating 1 job function(s)
info: Host.Startup[0]
      Found the following functions:
      Host.Functions.BadFunc
      
info: Microsoft.Azure.WebJobs.Script.WebHost.WebScriptHostHttpRoutesManager[0]
      Initializing function HTTP routes
      No HTTP routes mapped
      
info: Host.Startup[412]
      Host initialized (107ms)
fail: Host.Startup[0]
      The listener for function 'Functions.BadFunc' was unable to start.
Microsoft.Azure.WebJobs.Host.Listeners.FunctionListenerException: The listener for function 'Functions.BadFunc' was unable to start.
 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')
   at Microsoft.Azure.Storage.CloudStorageAccount.Parse(String connectionString)
   at Microsoft.Azure.WebJobs.Extensions.Timers.StorageScheduleMonitor.get_TimerStatusDirectory() in C:\azure-webjobs-sdk-extensions\src\WebJobs.Extensions\Extensions\Timers\Scheduling\StorageScheduleMonitor.cs:line 77
   at Microsoft.Azure.WebJobs.Extensions.Timers.StorageScheduleMonitor.GetStatusBlobReference(String timerName) in C:\azure-webjobs-sdk-extensions\src\WebJobs.Extensions\Extensions\Timers\Scheduling\StorageScheduleMonitor.cs:line 144
   at Microsoft.Azure.WebJobs.Extensions.Timers.StorageScheduleMonitor.GetStatusAsync(String timerName)
   at Microsoft.Azure.WebJobs.Extensions.Timers.Listeners.TimerListener.StartAsync(CancellationToken cancellationToken) in C:\azure-webjobs-sdk-extensions\src\WebJobs.Extensions\Extensions\Timers\Listener\TimerListener.cs:line 99
   at Microsoft.Azure.WebJobs.Host.Listeners.SingletonListener.StartAsync(CancellationToken cancellationToken) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Singleton\SingletonListener.cs:line 72
   at Microsoft.Azure.WebJobs.Host.Listeners.FunctionListener.StartAsync(CancellationToken cancellationToken, Boolean allowRetry) in C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Listeners\FunctionListener.cs:line 69
   --- End of inner exception stack trace ---
info: Host.Startup[413]
      Host started (154ms)
info: Host.Startup[0]
      Job host started
Hosting environment: Production
Content root path: /
Now listening on: http://[::]:80
Application started. Press Ctrl+C to shut down.
info: Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher[0]
      Worker process started and initialized.
info: Host.Startup[0]
      Retrying to start listener for function 'Functions.BadFunc' (Attempt 1)
info: Host.Startup[0]
      Listener successfully started for function 'Functions.BadFunc' after 1 retries.
info: Host.General[316]
      Host lock lease acquired by instance ID '000000000000000000000000F28FAECC'.
我使用
docker build--tag/azurefunctionsimage:v1.0.0.
构建映像,然后从docker桌面单击“运行”运行它

我一直在密切关注如何让硒在容器中工作。我已经将我的刮片功能指向了
chromedriver
,但我认为这不是问题所在。这是我的
function.json
文件:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "mytimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 * * * * *"
    }
  ]
}
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true;"
  }
}
local.settings.json
文件:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "mytimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 * * * * *"
    }
  ]
}
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true;"
  }
}
VSCode中的文件结构:

FunctionDirectory
    |_ BadFunc
        | __init__.py
        | custom_mod1.py
        | custom_mod2.py
          ...
        | function.json
    |_ local.settings.json
       Dockerfile
       requirements.txt
       etc..
在本地运行容器时,我是否遗漏了一些明显的原因,即为什么没有得到任何结果

或者这与实际的
\uuu init\uuuu.py
代码有关,返回类型为
None
,而不是其他类型

def main(mytimer: func.TimerRequest) -> None: #should be something else?
    utc_timestamp = datetime.datetime.utcnow().replace(
        tzinfo=datetime.timezone.utc).isoformat()

    if mytimer.past_due:
        logging.info('The timer is past due!')

    logging.info('Python timer trigger function ran at %s', utc_timestamp)
    
    # Class instantiation for the handling stuff ----
    name_handle_instance = dc.NameHandle()
    #calls other functions below...

您有为连接字符串设置的值吗?@Sajeetharan-除非您谈论的是
本地.settings.json
中的
AzureWebJobsStorage:“UseDevelopmentStorage=true;”“
,否则没有。在哪里可以这样做?谢谢你能像复制粘贴我Azure存储帐户中的连接字符串一样复制粘贴连接字符串吗?可以!对的试着替换