我目前正在supervisor为我的 Django 应用程序提供服务,然后我将其expose移植8002到我的 Docker 文件中。这一切正常...
[program:app]
command=gunicorn app.core.wsgi:application -c /var/projects/app/server/gunicorn.conf
user=webapp
backlog = 2048
chdir = "/var/projects/apps"
bind = "0.0.0.0:8002"
pidfile = "/var/run/webapp/gunicorn.pid"
daemon = False
debug = False
Run Code Online (Sandbox Code Playgroud)
在 Docker 中
# Expose listen ports
EXPOSE 8002
Run Code Online (Sandbox Code Playgroud)
但是,有人告诉我最好使用 socket在端口,但是我不确定如何在我的 Docker 文件中“暴露”一个套接字。这是我有多远:
新的主管配置....
backlog = 2048
chdir = "/var/projects/apps"
bind = "unix:/var/run/webapp/gunicorn.sock"
pidfile = "/var/run/webapp/gunicorn.pid"
daemon = False
debug = False
Run Code Online (Sandbox Code Playgroud)
码头工人
# Expose listen ports
EXPOSE ???? (may be unix:/var/run/webapp/gunicorn.sock fail_timeout=0;???)
Run Code Online (Sandbox Code Playgroud)
我如何暴露套接字?
f = open('wl4.txt', 'w')
hh = 0
######################################
for n in range(1,5):
for l in range(33,127):
if n==1:
b = chr(l) + '\n'
f.write(b)
hh += 1
elif n==2:
for s0 in range(33, 127):
b = chr(l) + chr(s0) + '\n'
f.write(b)
hh += 1
elif n==3:
for s0 in range(33, 127):
for s1 in range(33, 127):
b = chr(l) + chr(s0) + chr(s1) + '\n'
f.write(b)
hh += 1
elif n==4:
for s0 in range(33, 127):
for s1 in …Run Code Online (Sandbox Code Playgroud) 我刚刚使用 RabbitMQ 在我的本地机器 (win10) 上安装了 celery 并遵循了他们的初学者教程。但我收到错误消息TypeError: 'tuple' object is not callable
src>workon clicknstrip
(clicknstrip) src>python manage.py celery beat
celery beat v3.1.18 (Cipater) is starting.
__ - ... __ - _
Configuration ->
. broker -> amqp://guest:**@localhost:5672//
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%INFO
. maxinterval -> now (0s)
[2015-08-13 10:01:13,441: INFO/MainProcess] beat: Starting...
[2015-08-13 10:01:13,466: WARNING/MainProcess] DB Reset: Account for new __version__ field
[2015-08-13 10:01:13,470: CRITICAL/MainProcess] beat …Run Code Online (Sandbox Code Playgroud) 我已经覆盖了 celery 默认队列。下面是提到的设置。
BROKER_URL = "amqp://managedbrokerurl/username/"
CELERY_DEFAULT_QUEUE = 'project.env.default'
CELERY_ROUTES = {"app1.tasks.push_api_task": {"queue": "project.env.priority_queue"}}
Run Code Online (Sandbox Code Playgroud)
python manage.py celery worker -n env_worker -Q project.env.default
python manage.py celery worker -n env_worker -Q project.env.priority_queue
Run Code Online (Sandbox Code Playgroud)
根据配置,我期待除app1.tasks.push_api_task应进入队列之外的所有任务project.env.default。但是发生了一个奇怪的问题,例如任务将进入project.env.default队列以及celery队列(如果没有被覆盖,这是默认值)。
我检查了我们的代码库,没有任何地方使用celery队列来发布任务。
如果你们遇到过同样的问题,请帮助。
我有一个在Linux上成功运行的简单测试代码,但它不能在我的Windows 10 x64计算机上运行.
当我试图开始一个芹菜工人时,它抱怨了不可恢复的错误:PicklingError.(芹菜版:3.1.20)
在我的celery配置中,我将序列化设置为'json',但它仍然没有任何帮助.
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
Run Code Online (Sandbox Code Playgroud)
这是完整的错误消息:
[2016-02-09 15:11:48,532: ERROR/MainProcess] Unrecoverable error: PicklingError("Can't pickle <type 'module'>: it's not found as __builtin__.module",)
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\celery-3.1.20-py2.7.egg\celery\worker\__init__.py", line 206, in start
self.blueprint.start(self)
File "C:\Python27\lib\site-packages\celery-3.1.20-py2.7.egg\celery\bootsteps.py", line 123, in start
step.start(parent)
File "C:\Python27\lib\site-packages\celery-3.1.20-py2.7.egg\celery\bootsteps.py", line 374, in start
return self.obj.start()
File "C:\Python27\lib\site-packages\celery-3.1.20-py2.7.egg\celery\concurrency\base.py", line 131, in start
self.on_start()
File "C:\Python27\lib\site-packages\celery-3.1.20-py2.7.egg\celery\concurrency\prefork.py", line 117, in on_start
**self.options)
File "C:\Python27\lib\site-packages\billiard\pool.py", line 972, in __init__
self._create_worker_process(i)
File "C:\Python27\lib\site-packages\billiard\pool.py", line …Run Code Online (Sandbox Code Playgroud)