【发布时间】:2021-08-24 16:15:19
【问题描述】:
我想要一个 Celery Worker(以 Redis 作为代理和后端),它将接收来自多个远程 Celery 生产者的任务(通过使用“.send_task”)。
我正在尝试使用 pyinstaller 将生产者端打包到单个 *.exe 中。这个想法是运行 *.exe,它将向远程 Celery 工作人员发送任务。
这是“生产者”代码:
from celery import Celery
def main():
print('Sending Task')
#celery_app.send_task('add',args=(2,2))
celery=Celery('redis://:password@redis_server:6379')
celery.send_task('tasks.add',(2,2))
if __name__=="__main__":
main()
然后我使用 pyinstaller 将代码编译成单个文件。不幸的是,我在尝试运行可执行文件时遇到了异常。我收到以下错误:
Sending Task
Traceback (most recent call last):
File "sendtask.py", line 11, in <module>
File "sendtask.py", line 6, in main
File "celery\app\base.py", line 291, in __init__
File "celery\app\base.py", line 291, in <listcomp>
File "kombu\utils\imports.py", line 56, in symbol_by_name
File "importlib\__init__.py", line 127, in import_module
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'celery.fixups'
[5588] Failed to execute script 'sendtask' due to unhandled exception!
- Python v.3.8.10-64
- Pyinstaller v. 4.5.1
有人知道是否可以将 python 脚本编译为可执行文件,将任务发送到远程 Celery 工作人员?
任何帮助将不胜感激
谢谢 何塞
【问题讨论】:
标签: python redis celery celery-task