【发布时间】:2022-07-13 05:54:27
【问题描述】:
当我尝试在作为 Azure 函数应用程序运行的 Python 脚本中使用多处理时看到此错误。其他人在这里面临同样的问题 (ModuleNotFoundError: No module named '__app__') 但尚未回答有关他可腌制/不可腌制方法的问题。
所以这是给出错误的最简单的示例:
初始化.py
from multiprocessing import Pool
import azure.functions as func
def f(x):
return x*x
def main(mytimer: func.TimerRequest) -> None:
with Pool(5) as p:
print(p.map(f, [1, 2, 3]))
这是控制台输出:
函数运行
[2022-02-19T21:26:37.672Z] Worker process started and initialized.
[2022-02-19T21:26:40.048Z] Executing 'Functions.TCDatesToCT' (Reason='Timer fired at 2022-02-19T16:26:40.0177058-05:00', Id=f632a25f-5621-4e6f-93f0-476ce60a5221)
[2022-02-19T21:26:40.284Z] Process SpawnPoolWorker-1:
[2022-02-19T21:26:40.296Z] Process SpawnPoolWorker-3:
[2022-02-19T21:26:40.298Z] Process SpawnPoolWorker-2:
[2022-02-19T21:26:40.319Z] Traceback (most recent call last):
[2022-02-19T21:26:40.322Z] Traceback (most recent call last):
[2022-02-19T21:26:40.324Z] Traceback (most recent call last):
[2022-02-19T21:26:40.326Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 315, in _bootstrap
[2022-02-19T21:26:40.329Z] self.run()
[2022-02-19T21:26:40.330Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 315, in _bootstrap
[2022-02-19T21:26:40.336Z] self.run()
[2022-02-19T21:26:40.338Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 108, in run
[2022-02-19T21:26:40.344Z] self._target(*self._args, **self._kwargs)
[2022-02-19T21:26:40.346Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 108, in run
[2022-02-19T21:26:40.357Z] self._target(*self._args, **self._kwargs)
[2022-02-19T21:26:40.360Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 315, in _bootstrap
[2022-02-19T21:26:40.365Z] self.run()
[2022-02-19T21:26:40.367Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\pool.py", line 114, in worker
[2022-02-19T21:26:40.373Z] task = get()
[2022-02-19T21:26:40.375Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\process.py", line 108, in run
[2022-02-19T21:26:40.377Z] self._target(*self._args, **self._kwargs)
[2022-02-19T21:26:40.383Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\pool.py", line 114, in worker
[2022-02-19T21:26:40.391Z] task = get()
[2022-02-19T21:26:40.395Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\queues.py", line 368, in get
[2022-02-19T21:26:40.401Z] return _ForkingPickler.loads(res)
[2022-02-19T21:26:40.403Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\pool.py", line 114, in worker
[2022-02-19T21:26:40.405Z] task = get()
[2022-02-19T21:26:40.407Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\queues.py", line 368, in get
[2022-02-19T21:26:40.416Z] return _ForkingPickler.loads(res)
[2022-02-19T21:26:40.419Z] ModuleNotFoundError: No module named '__app__'
[2022-02-19T21:26:40.422Z] File "C:\Users\bwarrick\AppData\Local\Programs\Python\Python39\lib\multiprocessing\queues.py", line 368, in get
[2022-02-19T21:26:40.431Z] return _ForkingPickler.loads(res)
[2022-02-19T21:26:40.432Z] ModuleNotFoundError: No module named '__app__'
[2022-02-19T21:26:40.434Z] ModuleNotFoundError: No module named '__app__'
通常我在“if name == 'main':”之后使用 Multiprocessing,所以我认为这个问题是 Function App 如何调用 main() 函数在 init 中。几个星期以来,我一直在努力解决这个问题。任何想法表示赞赏。谢谢。
【问题讨论】:
标签: python azure-functions python-multiprocessing